Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/06/2008, 13:26
Avatar de Mort20
Mort20
 
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Problema con usuarios.

Si no lo entendido mal, la cosa es que después del register.php, cuando va al login.php no te enseña el nick: si es esto creo que ya he encontrado el error.

El error es que - creo, no estoy seguro del todo - el $_POST['nick'] sólo permanece en el archivo al que envía el formulario (es decir, en regiser.php), una vez redireccionado lo pierdes, y eso explica tu problema del login.php. Para solucionarlo, redirige a login.php?nick=$_POST['nick'] y coge el nick con $_GET['n'] en esa página, o bien replantea un poco tu register.php para no introducir tanto HTML y usa una función en dónde le pases el nick.

Luego otra cosa que no viene tanto al caso, tu forma de quitar los posibles ataques XSS es algo rara - en mi opinión, claro - y fea, por lo de tanto str_replace, te pongo un ejemplo de lo que hago yo en un formulario para enviar comentarios, que es posible que se pueda mejorar y tenga algún bug también:

Código:
<?php
/* Eliminate possible XSS Attack and parse */

    $error = false;
       $author = strtoupper(addslashes(strip_tags(trim($_POST['author']))));
         if($author==NULL) $error = 'no se ha introducido ningun nombre';
         else if($author=='MORT') $error = 'el nombre introducido esta registrado';

       $web = @fopen(strip_tags($_POST['web']),"r") ? $_POST['web'] : false;

       include(dirname(__FILE__) . '/phpbbcode.php');
         $comment = BBCode($_POST['comments']); //parse comment
         if($comment==NULL)
         {
            $err = 'no se ha introducido ningun comentario';
            $error = $error ? $error .= ' y ' . $err . '.<br />' : $error = $err . '.<br />';
         }

/* End XSS eliminator */
?>
La función BBCode mas o menos hace lo mismo que con los otros campos, salvo que no uso strip_tags para no cargarme las etiquetas del BBCode, claro. En vez de eso uso str_replace con el '<' y el '>' sustituyendolo por sus entidades HTML.

El $error es mera decoración, y el strtoupper es por otro motivo que no viene al caso xD