Gracias a los dos opte por el tutorial de WHK, lo que sucede esque... cree mi base como aparece en tutorial... y cree los archivos tal cual me dicen en el tutorial pero cuando...
Mi base de datos la cree en PHPmyAdmin hice mi base de datos llamada:
foraneo y mi tabla es usuarios
Uso:
WampServer 2.2
MyPHPAdmin 3.4.5
hice los siguientes .php's para que funcionara lo tengo en mi localhost:
mysql.php
<?php
if(!$SYS) exit; // Evita la visualización directa
$SYS['MYSQL']['USER'] = 'root';
$SYS['MYSQL']['PASS'] = '';
$SYS['MYSQL']['BDATOS'] = 'usuarios';
$SYS['MYSQL']['HOST'] = 'localhost';
// ---------------------------------------------------
$SYS['MYSQL']['HANDLE'] = mysql::crear_handle(
$SYS['MYSQL']['USER'],
$SYS['MYSQL']['PASS'],
$SYS['MYSQL']['BDATOS'],
$SYS['MYSQL']['HOST']
);
$_GET = stripslashses_gpc($_GET);
$_POST = stripslashses_gpc($_POST);
$_COOKIE = stripslashses_gpc($_COOKIE);
$_SERVER = stripslashses_gpc($_SERVER);
function stripslashses_gpc($buffer){
if(!function_exists('get_magic_quotes_gpc'))
return $buffer;
if(get_magic_quotes_gpc()){
if(is_array($buffer)){
foreach($buffer as $variable => $valor){
$temp[$variable] = stripslashses_gpc($valor);
}
return $temp;
}else{
return stripslashes($buffer);
}
}else{
return $buffer;
}
}
class mysql{
function crear_handle($user, $pass, $bdatos, $host){
if(!$handle = mysql_connect($host, $user, $pass))
return false; // Imposible conectar
if(mysql_select_db($bdatos, $handle)){
return $handle; // Retorna el manipulador
}else{
return false; // La base de datos no existe
}
}
function selecciona($query, $handle, $una_columna = false){
if(!$query = mysql_query($query, $handle))
return false; // La query falló
else{
while($fila = mysql_fetch_array($query, MYSQL_ASSOC)){
$retorno[] = $fila; // Llena la variable con las filas retornadas
}
@mysql_free_result($query); // Livera memoria
}
if($una_columna)
return $retorno[0]; // Devuelve una sola columna
return $retorno; // Devuelve todas las columnas
}
}
?>
usuarios.php
<?php
if(!$SYS) exit; // Evita la visualización directa
class user{
function registrar($data_array){
/* Verifica que cada dato sea real */
/* Falta el nick */
if(!$data_array['nick'])
return array(
'estado' => 'error',
'data' => 'Falta el nick.'
);
/* Falta el pass */
if(!$data_array['pass'])
return array(
'estado' => 'error',
'data' => 'Falta la contraseña.'
);
/* El mail es falso */
if(!user::es_mail($data_array['mail']))
return array(
'estado' => 'error',
'data' => 'La dirección de correo no es válido.'
);
/* El usuario ya existe */
if(user::existe_dato($data_array['nick'], 'nick'))
return array(
'estado' => 'error',
'data' => 'El nick ya existe.'
);
/* El mail ya existe */
if(user::existe_dato($data_array['mail'], 'mail'))
return array(
'estado' => 'error',
'data' => 'La dirección E-Mail \''.$data_array['mail'].'\' ya está siendo utilizada.'
);
/* Los datos son correctos */
global $SYS; // Globaliza para el Handle de MySQL
/*
Hacemos la query y le decimos a la función que nos entregue el
la primera columna solamente
*/
$id = mysql::selecciona('
select max(id) from usuarios
', $SYS['MYSQL']['HANDLE'], true);
/* Si no hay usuarios entonces el id es 1 */
$id = ((int)$id['max(id)'] + 1);
if(mysql_query('
INSERT INTO `foraneo`.`usuarios` (
`id` ,
`nick` ,
`nombre` ,
`pass` ,
`mail` ,
`token` ,
`data` ,
`fecha_acceso`
) VALUES (
\''.(int)$id.'\',
\''.mysql_real_escape_string($data_array['nick']).'\',
\''.mysql_real_escape_string($data_array['nombre']).'\',
\''.mysql_real_escape_string(sha1($data_array['pass'])).'\',
\''.mysql_real_escape_string($data_array['mail']).'\',
\''.md5(microtime().rand(0,999)).'\',
\'\',
\''.time().'\'
);
', $SYS['MYSQL']['HANDLE']))
return array(
'estado' => 'ok',
'data' => 'La cuenta ha sido creada satisfactoriamente!'
); // Base de datos actualizada
else
return array(
'estado' => 'error',
'data' => 'Imposible crear tu cuenta. Contactate con el administrador.'
); // Imposible actualizar los datos
}
function existe_dato($dato, $tipo){
global $SYS;
$valor = mysql::selecciona('
select `'.mysql_real_escape_string($tipo).'`
from usuarios
where `'.mysql_real_escape_string($tipo).'` = \''.mysql_real_escape_string($dato).'\'
limit 1
', $SYS['MYSQL']['HANDLE'], true);
if($valor[$tipo] == $dato)
return true; // Existe
else
return false; // No existe
}
function carga_sesion(){
global $SYS;
if(!$data = unserialize($_COOKIE['user_data']))
return false; // La cookie no es válida ya que no contiene datos serializados
$id = $data['id'];
$pass = $data['pass'];
unset($data); // Destruye la variable para ser reutilizada
$data = mysql::selecciona('
select *
from usuarios
where id = \''.mysql_real_escape_string($id).'\' and
pass = \''.mysql_real_escape_string($pass).'\'
limit 1
', $SYS['MYSQL']['HANDLE'], true); // Límite de 1 resultado
if($data['id']){
/* Actualiza la fecha del último acceso */
mysql_query('
update `usuarios`
SET `fecha_acceso` = \''.(int)time().'\'
where `id` = 2
limit 1
', $SYS['MYSQL']['HANDLE']);
return $data;
}else{
return false;
}
}
function login($user, $pass){
global $SYS;
$data = mysql::selecciona('
select *
from usuarios
where nick = \''.mysql_real_escape_string($user).'\' and
pass = \''.mysql_real_escape_string(sha1($pass)).'\'
limit 1
', $SYS['MYSQL']['HANDLE'], true); // Límite de 1 resultado
if(!$data['id'])
return false; // No es un usuario válido o se produjo un intento de ataque
/* Devuelve el pass cifrado en SHA1 al igual que la cookie */
/* Establece la cookie del usuario */
setcookie(
'user_data',
serialize(array('id' => $data['id'], 'pass' => $data['pass'])),
false,
'/'
); // Compatibiliza con pernalinks
return $data; // Retorna los datos del usuario
}
function es_mail($email){
/* Verifica atraves de la expresión regular si es correcto */
if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$", $email)){
$email = explode('@', $email);
/* Verifica que el host del mail existe */
if(@gethostbynamel($email[1])) return true;
else return false;
}else{
return false;
}
}
}
?>
registrarse.php
<?php
/* Compatibilidad con acentos y eñes */
header('Content-Type: text/html; charset=iso-8859-1');
/*
Declara la url del script
Nunca declarar $_SERVER['PHP_SELF'] si no saben como
utilizarlo ya que puede causar fallas de tipo XSS
http://www.webcomparte.com/foro/programacion-en-php/evitar-el-cross-site-scripting-(xss)/
*/
$SYS['WEB_SELF'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
/* conexión a la base de datos */
include('mysql.php');
/* Función de usuarios */
include('usuarios.php');
if($_POST['nick']){
if($_POST['pass'] == $_POST['pass2']){
$estado = user::registrar($_POST);
}else{
$estado = array(
'estado' => 'error',
'data' => 'Las contraseñas no coinciden.'
);
}
}
function muestra_input($variable){
global $estado;
if($estado['estado'] == 'error')
echo @htmlspecialchars($_POST[$variable], ENT_QUOTES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es-CL" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Registrarse</title>
</head>
<body>
<?php if($estado['estado'] == 'error'){ ?>
<strong>Se ha producido el siguiente error:</strong><br />
<?php echo htmlspecialchars($estado['data'], ENT_QUOTES); ?><br />
<br />
<?php }elseif($estado['estado'] == 'ok'){ ?>
<strong><?php echo htmlspecialchars($estado['data'], ENT_QUOTES); ?></strong><br />
<br />
<?php } ?>
Bievenido!, por favor ingrese sus datos.<br />
<br />
<form method="post" action="<?php echo $SYS['WEB_SELF']; ?>">
<table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr>
<td width="150">Nick</td>
<td><input type="text" name="nick" value="<?php muestra_input('nick'); ?>" /></td>
</tr>
<tr>
<td>Nombre completo</td>
<td><input type="text" name="nombre" value="<?php muestra_input('nombre'); ?>" /></td>
</tr>
<tr>
<td>Dirección E-Mail</td>
<td><input type="text" name="mail" value="<?php muestra_input('mail'); ?>" /></td>
</tr>
<tr>
<td>Contraseña</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<td>Repita su contraseña</td>
<td><input type="password" name="pass2" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Registrarse!" /></td>
</tr>
</tbody>
</table>
</body>
</html>
Me aparecen mis primeros errores en
registrarse.php cuando lo ando intentando diciendo:
Undefined index: nick in registrarse.php line 17
Undefined index: nick in estado.php line 41
Undefined index: estado in registrarse.php line 45
asi como esta intento crear el usuario...
Deprecated: Function ereg() is deprecated in usuarios.php line 148
Warning: mysql_query() expects parameter 2 to be resource, boolean given in mysql.php on line 52
Warning: mysql_query() expects parameter 2 to be resource, boolean given in mysql.php on line 52
Warning: mysql_query() expects parameter 2 to be resource, boolean given in mysql.php on line 52
Warning: mysql_query() expects parameter 2 to be resource, boolean given in usuarios.php on line 69
Espero que me puedan ayudar soy muy nuevo en esto, pero si entiendo syntasis de php, jquery, mysql (poco pero entiendo...), y quisiera enverdad tengo la paciencia para aprender u.u!
Asi tal cual lo copie, porque lo que quiero es que funcione primero y ya con eso empiezo a hacer el front-end del login