Foros del Web » Programando para Internet » PHP »

Ayuda Con Este Codigo.

Estas en el tema de Ayuda Con Este Codigo. en el foro de PHP en Foros del Web. Bueno la verdad es que no tengo muchos conocimientos en php, pero me gustaria saber si alguien puede ayudarme con este codigo que consegui para ...
  #1 (permalink)  
Antiguo 12/05/2008, 00:57
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Información Ayuda Con Este Codigo.

Bueno la verdad es que no tengo muchos conocimientos en php, pero me gustaria saber si alguien puede ayudarme con este codigo que consegui para un sistema de registro de usuario.

Un amigo me estubo ayudando y me dijo que tenia algunos problemas de comillas, pero ya el no tiene tiempo, el sistema se conecta a la base de datos bien y registra usuarios, el problema esta en que cuando me logeo, pues no me redirige a la pagina desde donde me logue con mi nombre de usuario, lo que me obliga a darle pa atras y por ende es como si no me hubiese logeado.

aqui les dejo el codigo para ver cuales errores tiene.

config.php
Código:
 
<?
unset($config) ;
$config[1] = 'localhost' ; # Puede ser "localhost" aunque también una URL o una IP
$config[2] = 'shadow21_shadow21' ; # Usuario de la base de datos
$config[3] = 'micontrasena' ; # Contraseña de la base de datos
$config[4] = 'shadow21_registro' ; # Nombre de la base de datos

$conectar = @mysql_connect($config[1],$config[2],$config[3]) or exit('Datos de conexión incorrectos.') ;
mysql_select_db($config[4],$conectar) or exit('No existe la base de datos.') ;
?>
registrar.php
Código:
<?
if($_POST['enviar']) {
require 'config.php' ;
function quitar($texto) {
$texto = trim($texto) ;
$texto = htmlspecialchars($texto) ;
$texto = str_replace(chr(160),'',$texto) ; # Elimina espacios que no pueden ser borrados por trim()
return $texto ;
}
$nick = quitar($_POST['nick']) ;
$email = quitar($_POST['email']) ;
$con = mysql_query("select count(id) from usuarios where nick='$nick' or email='$email'") ;
if(mysql_result($con,0,0)) {
echo 'El nick ya existe en la base de datos o ya esta registrado el email. Haz click <a href="javascript:history.back()">aqui</a> para regresar.' ;
}
else {
$fecha = time() ;
$contrasena = md5(md5(quitar($_POST['contrasena']))) ;
$sexo = quitar($_POST['sexo']) ;
mysql_query("insert into usuarios (fecha,nick,contrasena,email,sexo,ip) values ('$fecha','$nick','$contrasena','$email','$sexo','$_SERVER[REMOTE_ADDR]')") ;
echo 'Has sido registrad@. Haz click aquí <a href="http://shadow21.12gbfree.com/Index.html">aquí</a> para regresar a la página principal.' ;
}
}
else {
?>
<script>
function revisar() {
if(formulario.nick.value.length < 3) {
alert('El nick debe contener por lo mínimo 3 caractéres.') ;
return false ;
}
if(formulario.contrasena.value.length < 8) {
alert('La contraseña debe contener por lo mínimo 8 caractéres.') ;
return false ;
}
if(formulario.contrasena.value != formulario.c_contrasena.value) {
alert('Las contraseñas no son correctas.') ;
return false ;
}
if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(formulario.email.value)) {
alert('Debes poner un email válido.') ;
return false ;
}
}
</script>
<form name="formulario" method="post" action="<?=$_SERVER['PHP_SELF']?>" onsubmit="return revisar()">
<b>Nick:</b><br>
<input type="text" name="nick" maxlength="20"><br>
<b>Contrasena:</b><br>
<input type="password" name="contrasena" maxlength="10"><br>
<b>Confirmar contrasena:</b><br>
<input type="password" name="c_contrasena" maxlength="10"><br>
<b>Email:</b><br>
<input type="text" name="email" maxlength="40"><br>
<b>Sexo:</b><br>
<select name="sexo">
<option value="0">Masculino
<option value="1">Femenino
</select><br><br>
<input type="submit" name="enviar" value="Registrar">
</form>
</div>
<?
}
?>
entrar.php
Código:
<?php
	require 'config.php';
	
	if($_POST['enviar']) 
	{
	
		function quitar($texto) 
		{
			$texto = trim($texto) ;
			$texto = htmlspecialchars($texto) ;
	
			# --> Elimina espacios que no pueden ser borrados por trim()
			
			$texto = str_replace(chr(160),'',$texto) ;
			return $texto ;
		}
		
		$nick = quitar($_POST['nick']);
		$contrasena = md5(md5(quitar($_POST['contrasena']))) ;
		$sql = sprintf("select id,contrasena from usuarios where nick='%s'",$nick);
		$con = mysql_query($sql) ;
		$datos = mysql_fetch_assoc($con) ;
		
		if(mysql_num_rows($con)) 
		{
			if($datos['contrasena'] == $contrasena) 
			{
				setcookie('uid',$datos['id'],time()+604800);
				setcookie('unick',$nick,time()+604800);
				setcookie('ucontrasena', $contrasena, time() + 604800);
				header("Location: $_SERVER['HTTP_REFERER']");
			}
			else
			{
			
			echo 'La contraseña es incorrecta. Haz click <a href="javascript:history.back()">aquí</a> para regresar.' ;
			}
		}
		else 
		{
			echo 'El nick no existe. Haz click <a href="javascript:history.back()">aquí</a> para regresar.' ;
		}
	}
?>
login.php
Código:
<?
include('config.php');
$con = mysql_query("select count(id) from usuarios where id='".$_COOKIE['uid']."' and nick='".$_COOKIE['unick']."' and contrasena='".$_COOKIE['ucontrasena']."'");
if(!mysql_result($con,0,0)) {
exit('<p><b>Esta sección es solo para usuari@s registrad@s.</b><p><a href="registrarse.php">[Registrarse]</a>') ;
}
?>
logout.php
Código:
<?
setcookie('uid') ;
setcookie('unick') ;
setcookie('ucontrasena') ;
header('Location: Index.html') ;
?> //¿Como pongo que Location se redirija a una direccion que no es php
   //Por ejemplo: http://shadow21.12gbfree.com/Index.html o Index.html
ESPERO QUE ME AYUDEN POR FAVOR.
  #2 (permalink)  
Antiguo 12/05/2008, 22:08
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Ummm esperando a ver si alguien puede ayudarme con esto, de verdad es importante porque no me gustaria subir mi pagina sin un sistema de registro.

Muchas gracias.
  #3 (permalink)  
Antiguo 12/05/2008, 23:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Ayuda Con Este Codigo.

deberias ejecutarlo... y los errores los reportas, asi seremos de gran ayuda, seguro!
  #4 (permalink)  
Antiguo 13/05/2008, 16:55
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

como dije arriba, yo lo ejecuto y corre bien, no me genera ningun error, el error esta que cuando me logeo con mi clave o cualquier otra persona, que le da a iniciar seccion, pues el valida la contraseña bien pero sin embargo no te reenvia a la pagina de donde te logeaste con tus datos ya verificado, no te reenvia a ninguna pagina.
  #5 (permalink)  
Antiguo 13/05/2008, 17:36
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Cita:
Iniciado por pateketrueke Ver Mensaje
deberias ejecutarlo... y los errores los reportas, asi seremos de gran ayuda, seguro!
Mira yo estube corriendolo en un host free, ahora lo corri en un host privado, y me lanzo este error:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/santodom/public_html/entrar.php on line 31

donde la linea 31 del archivo entrar.php es:

header("Location: $_SERVER['HTTP_REFERER']");

que crees que tenga que cambiar ???
  #6 (permalink)  
Antiguo 13/05/2008, 18:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Ayuda Con Este Codigo.

si... observa

header("Location: {$_SERVER['HTTP_REFERER']}");

o...

header("Location: " . $_SERVER['HTTP_REFERER']);
  #7 (permalink)  
Antiguo 13/05/2008, 21:04
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Cita:
Iniciado por pateketrueke Ver Mensaje
si... observa

header("Location: {$_SERVER['HTTP_REFERER']}");

o...

header("Location: " . $_SERVER['HTTP_REFERER']);
Hola, gracias por ayudarme.

Bueno he usado estas dos opciones que me das y entonces me sale el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at /home/santodom/public_html/config.php:12) in /home/santodom/public_html/entrar.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at /home/santodom/public_html/config.php:12) in /home/santodom/public_html/entrar.php on line 29

Warning: Cannot modify header information - headers already sent by (output started at /home/santodom/public_html/config.php:12) in /home/santodom/public_html/entrar.php on line 30

Warning: Cannot modify header information - headers already sent by (output started at /home/santodom/public_html/config.php:12) in /home/santodom/public_html/entrar.php on line 31
  #8 (permalink)  
Antiguo 13/05/2008, 22:06
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 8 meses
Puntos: 18
Re: Ayuda Con Este Codigo.

antes de esa línea tienes alguna que empieza a sacar algo al navegador. Comprueba bien, que puede ser un simple salto de carro o un espacio blanco
  #9 (permalink)  
Antiguo 13/05/2008, 22:24
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Cita:
Iniciado por trasgukabi Ver Mensaje
antes de esa línea tienes alguna que empieza a sacar algo al navegador. Comprueba bien, que puede ser un simple salto de carro o un espacio blanco
Gracias por responderme, la verdad es que he comprado y no, ningun salgo o espacio en blanco, si te sirve de algo yo deje el codigo al principio de este post, el error se genera cuando iinvoco entrar.php si pudieras hecharle un vistaso y decirme que le ves de error por favor.
  #10 (permalink)  
Antiguo 14/05/2008, 04:18
Avatar de trasgukabi  
Fecha de Ingreso: septiembre-2004
Mensajes: 2.749
Antigüedad: 19 años, 8 meses
Puntos: 18
Re: Ayuda Con Este Codigo.

config.php tiene una linea en blanco al principio
  #11 (permalink)  
Antiguo 14/05/2008, 06:05
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 21 años, 4 meses
Puntos: 0
Re: Ayuda Con Este Codigo.

Puedes hacer esto... no es recomendable, mejor borra cualquier salida al navegador antes del header(), un echo, print, html, etc...


pero puedes hacer al principio del script:

<?php

ob_start();

?>

y al final, después del header:

<?php

ob_end_flush();

?>
__________________

la vida es bella cuando no es culera
  #12 (permalink)  
Antiguo 14/05/2008, 08:06
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Cita:
Iniciado por trasgukabi Ver Mensaje
config.php tiene una linea en blanco al principio
sip y ahora me trae de regreso a la pagina, pero me trae sin los datos de usuario, osea sin logearme. Y sin embargo yo si me registre bien.

que podria ser esto ??

tengo el codigo asi:
Código:
<?php
require 'config.php';
if($_POST['enviar']) 
{
function quitar($texto) 
{
$texto = trim($texto);
$texto = htmlspecialchars($texto);
# --> Elimina espacios que no pueden ser borrados por trim()
$texto = str_replace(chr(160),'',$texto);
return $texto ;
}
$nick = quitar($_POST['nick']);
$contrasena = md5(md5(quitar($_POST['contrasena'])));
$sql = sprintf("select id,contrasena from usuarios where nick='%s'",$nick);
$con = mysql_query($sql);
$datos = mysql_fetch_assoc($con);
if(mysql_num_rows($con)) 
{
if($datos['contrasena'] == $contrasena) 
{
setcookie('uid',$datos['id'],time()+604800);
setcookie('unick',$nick,time()+604800);
setcookie('ucontrasena', $contrasena, time() + 604800);
header("Location: {$_SERVER['HTTP_REFERER']}");
}
else
{
}
echo 'La contrasena es incorrecta. Haz click <a href="javascript:history.back()">aqui</a> para regresar.' ;
}
else 
{
echo 'El nick no existe. Haz click <a href="javascript:history.back()">aqui</a> para regresar.' ;
}
}
?>
  #13 (permalink)  
Antiguo 14/05/2008, 15:58
 
Fecha de Ingreso: mayo-2008
Mensajes: 14
Antigüedad: 16 años
Puntos: 0
Re: Ayuda Con Este Codigo.

Cita:
Iniciado por sdf23 Ver Mensaje
Puedes hacer esto... no es recomendable, mejor borra cualquier salida al navegador antes del header(), un echo, print, html, etc...


pero puedes hacer al principio del script:

<?php

ob_start();

?>

y al final, después del header:

<?php

ob_end_flush();

?>
que tal? gracias por la respuesta, bueno te digo lo mismo, usando esto que me diste, tambien me trae de regreso a la pagina, pero sin logearme, sin los datos de usuarios.

que podria ser ahora ??
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:56.