[Tutorial] Sistema de Usuarios con PHP y MySQL
En esta oportunidad les voy a dejar un tutorial básico para desarrollar un sistema de usuarios con PHP y MySQL, en el cual haremos uso de sesiones, trataré de ser lo más entendible posible, pero si tienen alguna duda, pueden decirla comentando en esta entrada.
Para empezar, crearemos nuestra tabla de usuarios con los siguientes campos:
CREATE TABLE `usuarios` (
`usuario_id` int(4) NOT NULL AUTO_INCREMENT,
`usuario_nombre` varchar(15) NOT NULL DEFAULT '',
`usuario_clave` varchar(32) NOT NULL DEFAULT '',
`usuario_email` varchar(50) NOT NULL DEFAULT '',
`usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`usuario_id`)
)
Como podrán notar, el campo usuario_clave tiene una longitud de 32 caracteres, ya que la contraseña de los usuarios registrados las encriptaremos en md5(). Ahora pasamos a crear nuestro scripts PHP.
Creación de archivo de configuración de acceso a MySQL:
A este archivo lo llamaremos acceso_db.php y va a contener los datos de acceso a nuestra Base de Datos.
<?php
$host_db = ""; // Host de la BD
$usuario_db = ""; // Usuario de la BD
$clave_db = ""; // Contraseña de la BD
$nombre_db = ""; // Nombre de la BD
//conectamos y seleccionamos db
mysql_connect($host_db, $usuario_db, $clave_db);
mysql_select_db($nombre_db);
?>
Formulario de Registro:
Ahora procederemos a crear nuestro formulario de registro, al cual llamaremos registro.php
<?php
include('acceso_db.php'); // incluimos el archivo de conexión a la Base de Datos
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
// creamos una función que nos parmita validar el email
function valida_email($correo) {
if (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$", $correo)) return true;
else return false;
}
// Procedemos a comprobar que los campos del formulario no estén vacíos
$sin_espacios = count_chars($_POST['usuario_nombre'], 1);
if(!empty($sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
echo "El campo <em>usuario_nombre</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['usuario_nombre'])) { // comprobamos que el campo usuario_nombre no esté vacío
echo "No haz ingresado tu usuario. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(empty($_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
echo "No haz ingresado contraseña. <a href='javascript:history.back();'>Reintentar</a>";
}elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}elseif(!valida_email($_POST['usuario_email'])) { // validamos que el email ingresado sea correcto
echo "El email ingresado no es válido. <a href='javascript:history.back();'>Reintentar</a>";
}else {
// "limpiamos" los campos del formulario de posibles códigos maliciosos
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
$usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
$usuario_email = mysql_real_escape_string($_POST['usuario_email']);
// comprobamos que el usuario ingresado no haya sido registrado antes
$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
if(mysql_num_rows($sql) > 0) {
echo "El nombre usuario elegido ya ha sido registrado anteriormente. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$usuario_clave = md5($usuario_clave); // encriptamos la contraseña ingresada con md5
// ingresamos los datos a la BD
$reg = mysql_query("INSERT INTO usuarios (usuario_nombre, usuario_clave, usuario_email, usuario_freg) VALUES ('".$usuario_nombre."', '".$usuario_clave."', '".$usuario_email."', NOW())");
if($reg) {
echo "Datos ingresados correctamente.";
}else {
echo "ha ocurrido un error y no se registraron los datos.";
}
}
}
}else {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" maxlength="15" /><br />
<label>Contraseña:</label><br />
<input type="password" name="usuario_clave" maxlength="15" /><br />
<label>Confirmar Contraseña:</label><br />
<input type="password" name="usuario_clave_conf" maxlength="15" /><br />
<label>Email:</label><br />
<input type="text" name="usuario_email" maxlength="50" /><br />
<input type="submit" name="enviar" value="Registrar" />
<input type="reset" value="Borrar" />
</form>
<?php
}
?>
Formulario de acceso:
Ahora pasaremos a crear nuestro formulario de acceso o Login, a este archivo lo llamaremos acceso.php
<?php
session_start();
include('acceso_db.php');
if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías
?>
<form action="comprobar.php" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" /><br />
<label>Contraseña:</label><br />
<input type="password" name="usuario_clave" /><br />
<input type="submit" name="enviar" value="Ingresar" />
</form>
<?php
}else {
?>
<p>Hola <strong><?=$_SESSION['usuario_nombre']?></strong> | <a href="logout.php">Salir</a></p>
<?php
}
?>
Este es el archivo que comprueba los datos ingresados en el formulario de login, lo llamaremos comprobar.php
<?php
session_start();
include('acceso_db.php');
if(isset($_POST['enviar'])) { // comprobamos que se hayan enviado los datos del formulario
// comprobamos que los campos usuarios_nombre y usuario_clave no estén vacíos
if(empty($_POST['usuario_nombre']) || empty($_POST['usuario_clave'])) {
echo "El usuario o la contraseña no han sido ingresados. <a href='javascript:history.back();'>Reintentar</a>";
}else {
// "limpiamos" los campos del formulario de posibles códigos maliciosos
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
$usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
$usuario_clave = md5($usuario_clave);
// comprobamos que los datos ingresados en el formulario coincidan con los de la BD
$sql = mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM usuarios WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'");
if($row = mysql_fetch_array($sql)) {
$_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id
$_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre
header("Location: acceso.php");
}else {
?>
Error, <a href="acceso.php">Reintentar</a>
<?php
}
}
}else {
header("Location: acceso.php");
}
?>
Agregando mensaje de bienvenida con enlace hacia el perfil personal y un enlace para cerrar sesión, en cualquier página:
Ahora lo que haremos será agregar un mensaje de bienvenida al usuario logueado, además de un enlace para que éste mismo cierre su sesión:
Al inicio de todo el documento HTML de nuestras páginas agregamos lo siguiente:
<?php
session_start();
include('acceso_db.php');
?>
Y en cualquier zona de nuestras páginas insertamos el siguiente código:
<?php
if(isset($_SESSION['usuario_nombre'])) {
?>
Bienvenido: <a href="perfil.php?id=<?=$_SESSION['usuario_id']?>"><strong><?=$_SESSION['usuario_nombre']?></strong></a><br />
<a href="logout.php">Cerrar Sesión</a>
<?php
}
?>
Cerrando la sesión del usuario:
Con este pequeño script cerramos la sesión del usuario, a este archivo lo llamamos logout.php
<?php
session_start();
include('acceso_db.php'); // incluímos los datos de acceso a la BD
// comprobamos que se haya iniciado la sesión
if(isset($_SESSION['usuario_nombre'])) {
session_destroy();
header("Location: index.php");
}else {
echo "Operación incorrecta.";
}
?>
Página Personal de Usuarios:
Ahora pasaremos a crear una página personal para cada usuario registrado en el sistema, para ello, mostraremos el perfil de usuario, según su ID. Creamos un archivo llamado perfil.php
<?php
session_start();
include('acceso_db.php');
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
$row = mysql_fetch_array($perfil);
$id = $row["usuario_id"];
$nick = $row["usuario_nombre"];
$email = $row["usuario_email"];
$freg = $row["usuario_freg"];
?>
<strong>Nick:</strong> <?=$nick?><br />
<strong>Email:</strong> <?=$email?><br />
<strong>Registrado el:</strong> <?=$freg?><br />
<strong>URL del perfil:</strong> <a href="perfil.php?id=<?=$id?>">Click aquí</a>
<?php
}else {
?>
<p>El perfil seleccionado no existe o ha sido eliminado.</p>
<?php
}
?>
Páginas restringidas:
Como en toda web con sistema de usuarios, siempre habrán zonas restringidas a las que sólo podrán acceder usuarios registrados, entonces para ello partimos del siguiente código:
<?php
session_start();
include('acceso_db.php'); // incluímos los datos de acceso a la BD
// comprobamos que se haya iniciado la sesión
if(isset($_SESSION['usuario_nombre'])) {
?>
<!-- Aquí ponemos todo el código HTML de nuestra página restringida, desde <html> a </html>-->
<?php
}else {
echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
<a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>";
}
?>
Recuperación de la contraseña:
Si el usuario ha olvidado su contraseña, habrá que facilitársela, para ello generaremos una nueva contraseña de forma aleatoria y se la enviaremos a su correo, a este archivo lo llamaremos recuperar_contrasena.php
<?php
include('acceso_db.php'); // incluímos los datos de acceso a la BD
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos del formulario
if(empty($_POST['usuario_nombre'])) {
echo "No ha ingresado el usuario. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
$usuario_nombre = trim($usuario_nombre);
$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");
if(mysql_num_rows($sql)) {
$row = mysql_fetch_assoc($sql);
$num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña
$nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria
$usuario_nombre = $row['usuario_nombre'];
$usuario_clave = $nueva_clave; // la nueva contraseña que se enviará por correo al usuario
$usuario_clave2 = md5($usuario_clave); // encriptamos la nueva contraseña para guardarla en la BD
$usuario_email = $row['usuario_email'];
// actualizamos los datos (contraseña) del usuario que solicitó su contraseña
mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave2."' WHERE usuario_nombre='".$usuario_nombre."'");
// Enviamos por email la nueva contraseña
$remite_nombre = ""; // Tu nombre o el de tu página
$remite_email = ""; // tu correo
$asunto = "Recuperación de contraseña"; // Asunto (se puede cambiar)
$mensaje = "Se ha generado una nueva contraseña para el usuario <strong>".$usuario_nombre."</strong>. La nueva contraseña es: <strong>".$usuario_clave."</strong>.";
$cabeceras = "From: ".$remite_nombre." <".$remite_correo.">rn";
$cabeceras = $cabeceras."Mime-Version: 1.0n";
$cabeceras = $cabeceras."Content-Type: text/html";
$enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras);
if($enviar_email) {
echo "La nueva contraseña ha sido enviada al email asociado al usuario ".$usuario_nombre.".";
}else {
echo "No se ha podido enviar el email. <a href='javascript:history.back();'>Reintentar</a>";
}
}else {
echo "El usuario <strong>".$usuario_nombre."</strong> no está registrado. <a href='javascript:history.back();'>Reintentar</a>";
}
}
}else {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Usuario:</label><br />
<input type="text" name="usuario_nombre" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
?>
Cambiando la contraseña:
Con este script, los usuarios podrán cambiar su contraseña, a este archivo lo llamaremos cambiar_contrasena.php
<?php
session_start();
include('acceso_db.php'); // incluímos los datos de conexión a la BD
if(isset($_SESSION['usuario_nombre'])) { // comprobamos que la sesión esté iniciada
if(isset($_POST['enviar'])) {
if($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) {
echo "Las contraseñas ingresadas no coinciden. <a href='javascript:history.back();'>Reintentar</a>";
}else {
$usuario_nombre = $_SESSION['usuario_nombre'];
$usuario_clave = mysql_real_escape_string($_POST["usuario_clave"]);
$usuario_clave = md5($usuario_clave); // encriptamos la nueva contraseña con md5
$sql = mysql_query("UPDATE usuarios SET usuario_clave='".$usuario_clave."' WHERE usuario_nombre='".$usuario_nombre."'");
if($sql) {
echo "Contraseña cambiada correctamente.";
}else {
echo "Error: No se pudo cambiar la contraseña. <a href='javascript:history.back();'>Reintentar</a>";
}
}
}else {
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<label>Nueva contraseña:</label><br />
<input type="password" name="usuario_clave" maxlength="15" /><br />
<label>Confirmar:</label><br />
<input type="password" name="usuario_clave_conf" maxlength="15" /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
<?php
}
}else {
echo "Acceso denegado.";
}
?>
Eso sería todo, naturalmente, se puede mejorar añadiéndole más cosas, pero para comenzar, puede ser útil.
Comentarios
Saludos!!!
$num_caracteres = 10; // asignamos el número de caracteres que va a tener la nueva contraseña
$num_caracteres = "10";if(mysql_num_rows($sql)) {
$row = mysql_fetch_assoc($sql) "AQUI LE FALTA UN ; "
$num_caracteres = "10"; // asignamos el número de caracteres que va a tener la nueva contraseña
$nueva_clave = substr(md5(rand()),0,$num_caracteres); // generamos una nueva contraseña de forma aleatoria
Saludos!
y funciono.
Saludos!
hay alguna forma de añadir redireccionamiento a esto? por ejemplo que usuario 1 puede entrar a pagina 1 usuario 2 puede entrar a pagina 2 etc etc, pero usuario 2 no puede entrar a pagina 1, se entiende? y que al iniciar sesion lleve automatico a pagina de cada uno.
gracias!
Saludos.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwusuarios
ecuperar_contrasena.php on line 10
El usuario no está registrado. Reintentar
Saludos excelente tutorial
$usuario_nombre = trim($usuario);Y reemplázala por esta otra:
$usuario_nombre = trim($usuario_nombre);El problema estaba en que la variable $usuario no existía, ahora ya puedes probarlo sin problemas.
Saludos.
$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email WHERE usuario_nombre='".$usuario_nombre."'");Y reemplázala por esta:
$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");Lo he revisado bien y ahora funciona correctamente, mil disculpas.
Saludos.
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwusuarios
ecuperar_contrasena.php on line 11
El usuario david no está registrado. Reintentar
busque y en la linea 11 tengo lo siguiente:
if(mysql_num_rows($sql)) {
y no veo ningún error, saludos y muchas gracias.
Ubícate en esta línea
$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email WHERE usuario_nombre='".$usuario_nombre."'");Y reemplázala por esta:
$sql = mysql_query("SELECT usuario_nombre, usuario_clave, usuario_email FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'") or die(mysql_error());He agregado un die(mysql_error()) para que imprima exactamente el error en MySQL
Con eso no debería darte error, fíjate que tengas los campos y el nombre de la tabla tal y como está puesto en el manual.
Saludos.
Parse error: syntax error, unexpected ')', expecting ']' in C:\Users\luis leiva\Desktop\xampp\htdocs\registro.php on line 67
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xxxxxx
egistro.php on line 30
Y en la línea 30 esta esto:
if(mysql_num_rows($sql) > 0) {
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:xampphtdocsSistema_experto
ecuperar_contrasena.php on line 28
No se ha podido enviar el email. Reintentar
creo que es por no tener un servidor de correo pero ps la verdad no se como se configura eso, le agradezco si me puede colaborar, gracias.
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/zxq.net/t/h/e/thedkm/htdocs/acceso.php:12) in /www/zxq.net/t/h/e/thedkm/htdocs/acceso.php on line 33
y en logout dice:
Warning: Cannot modify header information - headers already sent by (output started at /www/zxq.net/t/h/e/thedkm/htdocs/acceso_db.php:10) in /www/zxq.net/t/h/e/thedkm/htdocs/logout.php on line 7
Mira aqui estan los links para que cheques (puse los codigos tal cual ya los cheque):
http://thedkm.zxq.net/acceso.php
http://thedkm.zxq.net/registro.php
Sitio restringido:
http://thedkm.zxq.net/pruebaseguridad.php
<?phpsession_start();
?>
<html>
De esa forma ya no deberían salirte esos errores.
Saludos.
Saludos y muchas gracias
Gracias,
Disculpen las molestias y la demora.
Saludos.
Gracias.
Saludos.
en
$enviar_email = mail($usuario_email,$asunto,$mensaje,$cabeceras);
if($enviar_email)
di le quito el $enviar_email y lo dejo
mail($usuario_email,$asunto,$mensaje,$cabeceras);
if(mail)
me dice que el mensaje fue enviado, pero nunca llega, ayudenme por favor
linea:
mail($usuario_email,$asunto,$mensaje,$cabeceras);
if(mail)
me dice que el mensaje fue enviado, pero nunca llega, ayudenme por favor
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwSilmar(definitivo)users
egistro.php on line 34
y la linea 34 es lo siguente:
if(mysql_num_rows($sql) > 0) {
y lo que esta antes es :
$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre=.$usuario_nombre.");
$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre=.$usuario_nombre.");Bueno, esa línea cámbiala por esta:
$sql = mysql_query("SELECT usuario_nombre FROM usuarios WHERE usuario_nombre='".$usuario_nombre."'");Con eso ya no te debería dar problemas.
Saludos.
Me ha ayudado mucho.
Un saludo
Warning: Cannot modify header information - headers already sent by (output started at /data/multiserv/users/708075/projects/1715760/www/singin/acceso_db.php:11) in /data/multiserv/users/708075/projects/1715760/www/singin/comprobar.php on line 18
La linea 18 es: header("location: acceso.php");
Warning: Cannot modify header information - headers already sent by (output started at /data/multiserv/users/708075/projects/1715760/www/singin/acceso_db.php:11) in /data/multiserv/users/708075/projects/1715760/www/singin/logout.php on line 7
La linea 7 es: header("location: index.php");
Es evidente que ele HEADER ME ESTAD DANDO PROBLEMAS, pero no logro solucionarlos, si alguien me ayuda se los agradeceré!!
Muchas gracias.
Lo de subir los archivos en un .rar, lo haré llegando a casa, ahora estoy en el trabajo un poco atado de manos.
Saludos!
cambiar esta linea de codigo:
function valida_email($correo) {
if (eregi("^[_.0-9a-z-]+@[0-9a-z._-]+.[a-z]{2,4}$", $correo)) return true;
else return false;
}
por:
function valida_email($correo) {
if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
else return false;
}
en todas las páginas en donde aparezca el código, obviamente :)
Gracias por aportar y darnos parte de tu tiempo en este tutorial, me ha sido de gran ayuda!! ;)
Muchas Gracias
http://www.tuweb.com/perfil.php?id=1
Creas tu archivo PHP llamado perfil.php y en él haces la consulta a la tabla usuarios basándote en la ID de éstos:
<?phpsession_start(); // iniciamos la sesión
include('acceso_db.php'); // incluímos el archivo de acceso a la BD
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
?>
Luego haces un while para obtener los datos del usuario relacionado a la ID obtenida por $_GET para finalmente mostrarla como HTML. Espero haberme dejado entender.
Saludos.
asi es como me sale despues de logueado:
Nombre de Usuario: horacio
Fecha de registro: 01-01-2012 - 15:34
Email de registro: hpriegue@yahoo.com.ar
url de registro: horacio.php
IP: 186.19.50.253
URL DE REGISTRO: horacio.php AQUI seria ideal el himpervinculo a la pagina, sera posible hace bastante que estoy buscando la manera, no me da
el codigo php:
<?php
include("conexion.php");
user_login();
echo '<h2>Pagina solo para usuarios registrados</h2><br />';
echo '<b>Nombre de Usuario:</b> ' . $_SESSION['nick'] . '<br />';
echo '<b>Fecha de registro:</b> ' . date("d-m-Y - H:i", $_SESSION['fecha']) . '<br />';
echo '<b>Email de registro:</b> ' . $_SESSION['mail'] . '<br />';
echo '<b>url de registro:</b> ' . $_SESSION['url'] . '<br />';
echo '<b>IP:</b> ' . $_SESSION['ip'] . '<br /><br />';
Desde ya Muchas gracias ya veo el perfil, gracias
saludos
Saludos.
Igualmente MUCHAS GRACIAS de onda MUCHOS SALUDOS
Gracias un millon
1° que le agregues al archivo registro.php un envío de correo para cuando el usuario se registra le envies la info a su correo
2° que le integres PHPMAILER porque no todos los servidores tienen el correo activado y para los que utilizamos servidores gratuitos a veces es un dolor de cabezas terrible!! y de paso le agregas mas utilidad (en mi opinion claro...)
por ultimo quiero felicitarte porque la verdad que es un fierrazo todo tu script
saludos, segui asi!!! y si podes mejorar esas 2 cositas que te sugiero el script va a ser un fierrazo 100%!!!!!!
podrías poner un archivo zipeado para bajar??? será mucho pedior???
porque esto de andar haciendo copy-paste muchas veces se presta al error y la verdad no da hacer semejante tuto para que un descuidado meta mal el dedo y haga cag*****das jejeje
bueno, es una sugerencia nomas, pero sería bastante util
Ahora por falta de tiempo (el trabajo), apenas puedo entrar y poner uno u otro post, pero tu idea es buena, voy a tratar de liberarme un poco para añadir esas cosas que sugieres.
¡Saludos!
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/torresed/public_html/isj/a_u.php on line 135
ha ocurrido un error y no se registraron los datos.
desde muchas gracias
Los mensajes que me salen son tipo:
Parse error: syntax error, unexpected T_VARIABLE in /is/htdocs/wp1031212_UXNZ7RQ0NJ/www/cac/perfil.php on line 4
esta es la web (de prueba) http://www.dfmaker.com/perfil.php
Por favor les agradecería mucho que me ayudaran, si pueden pasarme algun zip o carpeta con el contenido.... sin errores... muchisimas gracias desde Berlín!!
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()
Saludos.
<?=$_SERVER['PHP_SELF']?>
Estoy desde localhost
Warning: Cannot modify header information - headers already sent by (output started at /home/tekmacon/public_html/Sitio Regalos/nuevo/acceso_db.php:10) in /home/tekmacon/public_html/Sitio Regalos/nuevo/comprobar.php on line 18
el de logout me manda este error
Warning: Cannot modify header information - headers already sent by (output started at /home/tekmacon/public_html/Sitio Regalos/nuevo/acceso_db.php:10) in /home/tekmacon/public_html/Sitio Regalos/nuevo/logout.php on line 7
cheque los coments y hay un en el que dices que el error esta concretemente en el archivo acceso_db.php
pero no tengo ningun salto de linea o que le falte un caracter me podrias ayudar soy muy novato en esto y la verdad es que no le encuentro la solucion
de antemano te lo agradesco
session_start();Debe ir al inicio de TODO el documento HTML de esta forma:
<?phpsession_start();
?>
<html>
<!-- demás elementos -->
Ya que si estás copiando el script como aparece en el post y lo estás pegando dentro del <body> te arrojará esos errores.
Saludos.
Gracia por la pronta respuesta la verdad es que es muy dificil encontrar gente que te apoye =)
bueno mira te comento que el session_start();
que me mencionas lo tengo hasta el inicio de todo mi codigo de html ahora, puede ser que este archivo lo tengo como Inedx.html, tal ves tenga que ser en PHP la verdad no lo habia pensado, pero si no fuera el caso es que me sigue arrojanado aun asi dado lo que me comentas.
nuevamente te agradesco por tomarte el tiempo de leerme y de constestarme.
saludos =D.
Es recomendable que tus archivos sean .php, y en todos ellos, al inicio de todo el documento poner:
<?phpsession_start();
?>
Saludos.
eres muy amable, mi pregunta es de otro tema, si tienes el tema y decirme donde , estare agradecido, se puede tener una base de datos de imagenes?, por ejemplo tengo una base de datos de perfumes y cuando escribes el perfume que estas buscando, sale la informacion del perfume en eso no hay ningun problema, pero quisiera a parte de la informacion que sale, que saliera la imagen del perfume,si se puede? y en donde estan esos tutoriales? gracias de antemano y un saludo cordial.
Saludos.
tengo un carrito de compras un poco austero, tiene solo <form>
y ahi va poniendo la gente los articulos que quieren por ejemplo salen los perfumes y ya dicen 2 de este 3 de este y al enviar les aparece la nota total de lo que compraron y el precio, pero son como 500 productos y para que funcione los tengo en la misma pagina porque si los pongo en diferentes paginas solo les aparece la nota final de la pagina en la que estan, quiero almacenar eso datos de la otra hoja, pero sin base de datos ni sesion star se puede??
Si quieres pasar a vernos puedes hacerlo <a href="http://www.spaceweb.es">Visitar nuestro sitio</a>
Notice: Undefined index: id in /opt/lampp/htdocs/usus/perfil.php on line 4
El perfil seleccionado no existe o ha sido eliminado
O como debo hacer para llamar el perfil por favor indicame donde está el error
http://tuweb.com/perfil.php?usuario_id=1
El "1" puedes reemplazarlo por la id de tus usuarios, y en base a eso hacer la consulta en la base de datos para mostrar el perfil correspondiente a dicha ID.
Saludos.
Notice: Undefined index: id in E:\xampp\htdocs\Prode\fecha1.php on line 8
El perfil seleccionado no existe o ha sido eliminado
en la linea 8 yo tengo este codigo
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
este es el codigo completo que tengo en fecha1.php que quiero msotrar un un frame
<?php
session_start();
include('acceso_db.php'); // incluímos los datos de acceso a la BD
// comprobamos que se haya iniciado la sesión
if(isset($_SESSION['usuario_nombre'])) {
?>
<?php
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
if(mysql_num_rows($perfil)) { // Comprobamos que exista el registro con la ID ingresada
$row = mysql_fetch_array($perfil);
$id = $row["usuario_id"];
$participante = $row["usuario_participante"];
$nick = $row["usuario_nombre"];
$email = $row["usuario_email"];
$freg = $row["usuario_freg"];
?>
<strong>Participante:</strong> <?=$participante?><br />
<strong>Nick:</strong> <?=$nick?><br />
<strong>Email:</strong> <?=$email?><br />
<?php
}else {
?>
<p>El perfil seleccionado no existe o ha sido eliminado.</p>
<?php
}
?>
<?php
}else {
echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
<a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>";
}
?>
si me podes dar una manito ..contento..
muchas gracias
saludos y gracias de ante mano
Saludos, gradioso script
FORBIDDEN
You don't have permission to access /< on this server
y me sale otro error en recuperar contraseña y no se cual es el error:
( ! ) Fatal error: Unknown: Failed opening required 'C:/wamp/www/recuperar contraseña.php' (include_path='.;C:\php\pear') in Unknown on line 0
Cuando inserto un nuevo usuario en mi base de datos mediante el formulario lo hace genial!!
pero cuando me quiero acceder a la base de datos, siempre meda un error. reintentar
¿Que puede ser? he probado todo y ya me duele la cabeza,
Ayuda por favorrrr
Saludos
gracias
xd
ejem: Hola " " | Salir
les digo que esta rebien el cod
asi.
( ! ) Notice: Undefined index: id in C:\wamp\www\Nueva carpeta\perfil.php on line 4
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Nota\registroavanzado.php on line 28
Felicidades wey. Saludos de México.
tengo un error en registro.php
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\
????????????
Warning: Cannot modify header information - headers already sent by .... comprobar.php on line 26
no se cual sea el problema, podrias echarme la mano con eso? o alguien que lo haya solucionado porfas me diga como.
Gracias por todo y saludos a toda la gente
Estamos en contacto de todas maneras
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 80
Deprecated: Assigning the return value of new by reference is deprecated in C:\xampp\php\PEAR\Config.php on line 166
Alguien ha podido verificar que funcione de forma adecuada?
MiJT, algun correo para poder localizarte y ver si me puedes apoyar? Gracias
Tengo un problema a la hora de dejar iniciada la sesión para una pagina restringida, me dice que no se puede acceder debido a que no esta registrado.
El 'user' ya esta registrado, pero es como si no se hubiera inicializado la sesión del mismo!
Gracias :)
El perfil seleccionado no existe o ha sido eliminado.
El fallo debe estar en el IF, pero no logro encontrarlo.
Gracias de antemano y fenomenal POST
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_GET['id']."'") or die(mysql_error());
y esta es la sustitucion para que me funcionara
$perfil = mysql_query("SELECT * FROM usuarios WHERE usuario_id='".$_SESSION['usuario_id']."'") or die(mysql_error());
"Undefined variable: HTTP_POST_VARS in C:\wamp\www\validar_usuario.php on line 12"
He intentado definir la variable pero luego me sale que no he especificado ningun usuario o contraseña. Y me deja perfectamente registrarme pero no puedo logearme. Ayuda por favor.
Un saludo y graciias.
estoy validando por medio del "correo(email)", no por el usuario mi metodo de login es por email y clave.
FORBIDDEN
You don't have permission to access /< on this server
y me sale otro error en recuperar contraseña y no se cual es el error:
( ! ) Fatal error: Unknown: Failed opening required 'C:/wamp/www/recuperar contraseña.php' (include_path='.;C:\php\pear') in Unknown on line 0
Tengo una pagina llamada home.php cuando inicia sesion te redirecciona a home.php y quiero que muestre el nombre, apellido, etc. No se si me explico bien lo que quiero hacer... espero que si :D
Saludos....
Saludos.
de antemano gracias, saludos.
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\basededatos\perfil.php:1) in C:\AppServ\www\basededatos\perfil.php on line 2
nose si me puedas ayudar soy bien novato en mysql?
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/u649158357/public_html/pagina/registro.php on line 41
Linea 41 :
40 .$sql = mysql_query("SELECT nick FROM usuarios WHERE nick='".$nick."'");
41. if(mysql_num_rows($sql) > 0) {
He estado mirando distintos tutoriales para un sistema de registro de usuarios, y este me pareció muy completo.
Con explicaciones breves (lo cual es genial para mi) y claras.
Muchas gracias!
el form action porque esta con esto= =$_SERVER['PHP_SELF']?>???
Pero sigo con el problema de mostrar los datos en una pagina, tengo toda la pagina armada y todo. Pero cuando quiero imprimir datos. Lo unico que se puede imprimir es <?=$_SESSION['usuario_id']?> y <?=$_SESSION['usuario_user']?>. Yo quisiera imprimir otros como <?=$_SESSION['usuario_avatar']?>, <?=$_SESSION['usuario_nombre']?>, etc. En el index.php, tengo que modificar algo de comprobar.php o que será? Espero que puedan solucionar mi duda... :D gracias desde ya...
Forbidden
You don't have permission to access /reseller/< on this server.
y en el url me manda
esto?
<?=$_SERVER['PHP_SELF']?>
para alguna manera en ke alguien ya haya solucionado esto?
Forbidden
You don't have permission to access /Administracion/echo< on this server
solo eso es decir no me guarda pero tampoco puedo ir a otras paginas por ese error y todo se debe por esta linea en el form action=<?=$_SERVER['PHP_SELF']?>"
por favor como lo soluciono ayuda si y estoy trabajando desde localhost expliquemme porfa. y gracias por todo.
como colar un codigo html despues del echo " para personalizar esa parte.
echo "Estás accediendo a una página restringida, para ver su contenido debes estar registrado.<br />
<a href='acceso.php'>Ingresar</a> / <a href='registro.php'>Regitrarme</a>";
podrias darme el codigo completo ya que no entiendo esto:
Páginas restringidas:
Como en toda web con sistema de usuarios, siempre habrán zonas restringidas a las que sólo podrán acceder usuarios registrados, entonces para ello partimos del siguiente código....
no se donde va esto.
Gracias!
error al correr
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\cambiar_contrasena.php:9) in C:\xampp\htdocs\cambiar_contrasena.php on line 10
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\cambiar_contrasena.php:9) in C:\xampp\htdocs\cambiar_contrasena.php on line 10
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'username'@'localhost' (using password: YES) in C:\xampp\htdocs\acceso_db.php on line 16
Acceso denegado.
pero obviamente si esta registrado
como paso de acceso.php aperfil php eh puesto hasta un link pero no me da la informacion gracias y espero me puedan ayudar
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\probando controles\registro.php on line 27
Datos ingresados correctamente. los datos me los ingresa bien , aqui esta la linea esa q tiene el error
if(mysql_num_rows($sql) > 0) {
Podrias resolverme una duda?
Podria añadirle una imagen de perfil personalizable? es decir, que en el PHP perfil.php...
salga tambien una imagen de perfil de por ejemplo 128x128 px o 256x256
Gracias de antemano y gracias por el post que has hecho