Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 8 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mié Jul 30, 2008 11:00 pm
Mensajes: 379
Ubicación: Colombia/Valle del cauca/Yumbo

Nota Publicado: Vie Abr 22, 2011 5:24 pm 
Arriba  
Bueno lo que pasa es que tengo el siguiente activate.php, cuando un usuario se registra en mi pagina el sistema le envia un mail de verificacion que lo redirige a la pagina de validate.php y le asigna un numero lo que pasa es que he probado registrarme y todo va bien hasta el correo,cuando abro el link de validar me salta el siguiente aviso:

El nombre de usuario no existe,ya ha sido verificado o ha introducido un codigo de activacion erroneo.

osea que tal parece que no esta validando los usuarios correctamente, si alguien me ayuda a detectar el error le agradeceria muchisimo. :D

Código:
<?
require 'require.inc.php';
$j_name=$username;
// activate.php - activate user
$acode = addslashes($acode);
$checkql = mysql_query("select * from $user_table WHERE username='$j_name' AND verified!='y' AND activationcode='$acode'");
if (mysql_num_rows($checkql) > 0) {
$userrow = mysql_fetch_array($checkql);
mysql_query("UPDATE $user_table SET verified = 'y' where username = '$j_name' AND activationcode='$acode'") or die("Hubo un error de validacion por favor contacte a el administrador");
mysql_query("UPDATE $user_table SET points=points+100 WHERE username='".$userrow["ref"]."'");
      // print result
?>
<center>
<font size=-1>Su cuenta ha sido activada! <BR>
<a href='index.php'>Click aqui para ir al inicio y loguearse</a>.</font>
</center>
<?
} else {
die ("El nombre de usuario no existe,ya ha sido verificado o ha introducido un codigo de activacion erroneo.");
}

      // close database connection
      mysql_close($connection);
?>

_________________
MI BLOG
www.diariodelinux.blogspot.com


Última edición por shruken el Sab Abr 23, 2011 9:04 pm, editado 2 veces en total
 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Sab Abr 23, 2011 9:28 am 
Arriba  
Código:
$j_name=$username;

$acode = addslashes($acode);


que valores tiene esas variables ??? de donde recibes los datos ??? acaso no deberías recibiros por $_POST o similar y si fueran sesión o deberías declarar la session anteriormente $session_start()

prueba interrumpir el hilo de ejecución mediante die() para ver el valor de las variables.

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mié Jul 30, 2008 11:00 pm
Mensajes: 379
Ubicación: Colombia/Valle del cauca/Yumbo

Nota Publicado: Sab Abr 23, 2011 3:32 pm 
Arriba  
este es de cuando se registra lo que hace es enviar un mail que lleva un numero de verificacion para completar el registro.

Código:
<?
// send email
$myname = $contact_name;
$myemail = $contact_email;

$contactname = $signup[rname];
$contactemail = $signup[email];
$message = "Hello ".$signup[fname].",<BR>".
"Greetings to our newest member!  Here is your login info:<BR><BR>".
"username: ".$signup[username]."<BR>".
"password: ".$signup[password]."<BR>".
"activation code: ".$acode."<br><br>".
"<B>To activate your account, simply visit this address: <a href='".$siteUrl."activate.php?username=".$signup[username]."&acode=".$acode."'>".$siteUrl."activate.php?username=".$signup[username]."&acode=".$acode."</a></b><br><br>".
"When you log in, your first step should be to enter your websites to advertise. Don't forget your password!";
$subject = "Welcome to $title";

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$contact_email."\r\n";
$headers .= "To: ".$contactemail."\r\n";
$headers .= "Reply-To: ".$contact_name."\r\n";
$headers .= "X-Priority: 1\r\n";
$headers .= "X-MSMail-Priority: High\r\n";
$headers .= "X-Mailer: Just My Server";

mail($contactemail, $subject, $message, $headers);
$signup[username] = "";

echo "You should be receiving an activation email from us shortly.";
?>




Y este es el que se supone que valida los usuarios.


Código:
<?php
session_start();
require 'dconn.php';
$connection = mysql_connect($db_server, $db_user,$db_pass) or die(mysql_error());
mysql_select_db($db_name, $connection) or die(mysql_error());

   $uname = $_POST['uname'];
   $password = $_POST['password'];

   //establecer la consulta
   $query = "SELECT * FROM $user_table WHERE username='$uname' AND password='$password'";
         
   //ejecutar la consulta y obtener el número de filas afectadas
   $result = mysql_query($query, $connection) or die('error making query');
   $affected_rows = mysql_num_rows($result);

   //si no es exactamente uno de los resultados, el usuario es validado. De lo contrario, es válido
   if($affected_rows == 1) {
   
      $result = mysql_query("SELECT userid, verified, username AS uuname FROM $user_table where username='$uname'",$connection);
      if ($myrow = mysql_fetch_array($result)) {


                   if ($myrow["verified"] == 'n') {
                       die("You have not yet verified your account.");
                   }
             
            $_SESSION["id"]=$myrow['userid'];
                $_SESSION["username"]=$myrow['uuname'];

           header("Location: start.php?option=main");
      } else {

         echo "No se encontraron sus datos por favor<a href='index.php'>Registrese</a>";   

      }
      
      
   }  else {
      echo mysql_error();
      header ("Location: index.php?invalid=invalid+username/password");
   }
?>



Y este los activa

Código:
<?
require 'require.inc.php';
$j_name=$username;
// activate.php - activate user
$acode = addslashes($acode);
$checkql = mysql_query("select * from $user_table WHERE username='$j_name' AND verified!='y' AND activationcode='$acode'");
if (mysql_num_rows($checkql) > 0) {
$userrow = mysql_fetch_array($checkql);
mysql_query("UPDATE $user_table SET verified = 'y' where username = '$j_name' AND activationcode='$acode'") or die("There was an error validating your existence, please contact an admin.");
mysql_query("UPDATE $user_table SET points=points+100 WHERE username='".$userrow["ref"]."'");
      // print result
?>
<center>
<font size=-1>You Are Now Activated! <BR>
<a href='index.php'>Go back to the main page to log in</a>.</font>
</center>
<?
} else {
die ("Either your username does not exist, you are already validated, or you supplied the wrong activation code.");
}

      // close database connection
      mysql_close($connection);
?>


y aca el index donde empieza todo

Código:
<?php
require 'require.inc.php';


// Unset all of the session variables.
@session_unset();
// Finally, destroy the session.
@session_destroy();
/*
if ($_GET('signup')) {
error("SIGNUP");
   echo "Error Checking<br>";
   while(list($name, $value) = each($signup)) {
      echo "$name - $value<br>";
   }
}
*/

    if (@$signup) {
   
      if (@$signup[repassword] != @$signup[password]) {
         $err_msg = "Your passwords do not match.";
error($err_msg);
      }
   
      if(!eregi("^[_\.0-9a-z-]+$",@$signup[username])) {
         $err_msg = "Invalid Username! Usernames can consist of letters and numbers only.";
error($err_msg);      
}
      if(!eregi("^[_\.0-9a-z-]+$",@$signup[password])) {
         $err_msg = "Invalid Password!  Passwords can consist of letters and numbers only.";
      }
      if(!@$signup[password] || !@$signup[username] || !@$signup[email] || !@$signup[username]) {
            $err_msg = "Oops! You forgot some important fields!"; }

      if (mysql_num_rows(mysql_query("Select username from $user_table where username = '$signup[username]'")) > 0) {
          $err_msg = "Oops! Someone already has that username.";
       }

      if (!@$err_msg) {
   srand((double)microtime()*1000000);
   $acode = rand(100000, 199999);

   $usercheck = @mysql_query("INSERT INTO $user_table (username, realname, email, password, verified, activationcode, type, points, joindate, ref) values('$signup[username]','$signup[rname]',
         '$signup[email]','$signup[password]', 'n', $acode, 'free', $signPoints, ".time().", '$signup[ref]')");

         
           // done, you are entered correctly, Now Enter the points and URL info
           
       
             $sql = "Select userid from $user_table where username='$signup[username]'";

      $result = mysql_query( $sql );
         if ( $result != false )
            {
         while ( $data = mysql_fetch_assoc( $result ) )
         {
            $point_set = $data['id'];
      
            }
         } else {
            echo mysql_error();
         }   

       
           
                  if (!@$usercheck) {
            $err_msg = "Database error:<br>There was an error entering your account.<br>It is possible that username already exists, please try another one.<br>";
            }   else {
               include ("reg.php");
               exit;
               }
         }
         if (!@$err_msg) {
            // done, you are entered correctly

         }
} else {


}
?>
<html>
<head><title>
   <? echo $title; ?> - Surf Exchange Engine
  </title>
<META NAME="keywords" CONTENT="free surf manual surf exchange money get paid traffic visitors hits">
<META NAME="description" CONTENT="Generate crazy hits to your website by visiting others, and earning money!">
</head>

<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<BODY aLink="#333333" bgColor="white" link="#333333" text="#000000" vLink="#333333">
<basefont face='tahoma'><table width=100% background='images/1.jpg' cellpadding="0" cellspacing="0" style="background-repeat: no-repeat">
  <tr valign="middle">
    <td colspan="2" valign='middle'> <br>
      <blockquote> <b><font face="Verdana, Arial, Helvetica, sans-serif" color="#000099" size=6>
        <? echo $title; ?></font></b> </blockquote>
    </td>
  </tr>
  <tr>
    <td width=60% bgcolor="#FFFFFF" align="center"><small>(<a href='reset.php'>I've lost my password</a>)</small></td>
    <td width="40%" align="right" class="nowrapbg" background="images/logback.jpg" style="background-repeat: no-repeat"><small>
      <form action='validate.php' method=post>
        <font size="2">Username:
        <input name="uname" type="text" size="6">
   Password:
   <input name="password" type="password" size="7">
   <input type="image" border="0" name="imageField" src="images/arrow.gif" width="17" height="17">
   </font>
      </form>
      </small></td>
  </tr>
</table><font color=red><? echo @$invalid; echo "<br>"; ?></font>
<? echo $mainText;
if (@!$signup[ref]) { $signup[ref] = $ref; } ?>
<? if (@$err_msg) echo "<br><font color=red size=2>$err_msg</font><br>"; ?>
                  <form name="form"  action="<? echo $PHP_SELF; ?>" method="POST">
<input type="hidden" name="signup" value="true">
<input type="hidden" name="signup[ref]" value="<? echo $signup[ref]; ?>">       
<table width=100% cellpadding="2" cellspacing="0" align=center>
                     
    <tr>
      <td colspan=2 bgcolor="#CCCCFF"><b>Please Enter Your
        Information:</b></td>
    <tr><td>Real Name:</td><td><input type="text" name="signup[rname]" maxlength="36" size="25" value="<? echo @$signup[rname]; ?>"></td></tr><tr><td> E-mail:</td><td><input type="text" name="signup[email]" maxlength="255" size="25" value="<? echo @$signup[email]; ?>"></td></tr>
    <tr>
      <td colspan = 2 bgcolor="#CCCCFF"> <b>Please supply
        a Username and Password</b></td>
    </tr><tr><td> Username:</td><td>
<input type="text" name="signup[username]" maxlength="10" size=25 value="<? echo @$signup[username]; ?>"></td></tr><tr><td> Password:</td><td> <input type="password" name="signup[password]" maxlength=10 size="25"></td></tr><tr> <td> Re-Enter Password:</td><td>
<input type="password" name="signup[repassword]" size=25></td></tr>
    <tr align="center">
      <td colspan=2>Press the button below ONCE to continue the process it will
        take a few seconds, please be patient! </td>
    </tr>
    <tr align="center">
      <td colspan=2>
        <input name="submit2" type="submit" value="Signup">
      </td>
    </tr></table></form>
<tr><td width="800" align="center"> <CENTER>
<table>
<tr>
  <td class="font" align=center><a href="contact.php" target=_blank>-contact us-</a>&nbsp;&nbsp;<a href="privacy.htm" target="_blank">-privacy policy-</a>&nbsp;&nbsp;<a href="spam.htm" target="_blank">-spam policy-</a><br>
            This has been a Sabu production</td>
        </tr>
</table>
</CENTER></td></tr>
</body></html>


todo funciona perfecto manda el mail con el correo y todo pero al momento de hacer clik al link de validar sale el erro de que ya fue activado o no existe como dije en el primer post.


Y probando lo que me dijiste me salio esto.

Parse error: syntax error, unexpected T_VARIABLE in /home/shruken1/public_html/traficogratis.cz.cc/activate.php on line 5

_________________
MI BLOG
www.diariodelinux.blogspot.com

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Sab Abr 23, 2011 3:38 pm 
Arriba  
bien .. pare3ce que no me entiendes... en el validado haces una consulta sql en la que le pasas como parámetro las variables $j_name=$username;
y $acode = addslashes($acode); pero en ningún lado les colocas un valor....

osea el usuario hace clic en el link del mensaje y lo lleva al validador pero como no esta definido tomar los valores para las variables que mencione, la consulta no se ejecuta y el script entra en el else esto esta bien ya que como las variables no tiene valor alguna no hay registros en la BBDD que devuelvan true por lo que no se pueden ejecutar las sentencias del if, por ello el flujo salta al else

} else {
die ("Either your username does not exist, you are already validated, or you supplied the wrong activation code.");
}


revisa mediante die('la variable x vale --> '.$variable); que valores tienen las variables que pasas como parámetro a la sentencia sql.

por lo pronto te diria que nunca van a tener u valor ya que no tiene ningún método para recoger el valor o almeno yo no lo veo. deberia tomarlo por post o get o request o mediante sesiones y en el script del validador no hay ninguno de ellos.

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mié Jul 30, 2008 11:00 pm
Mensajes: 379
Ubicación: Colombia/Valle del cauca/Yumbo

Nota Publicado: Sab Abr 23, 2011 4:33 pm 
Arriba  
y si lo hago mas o menos asi?

Código:
<?php
$codigo = $_GET['acode'];
require 'require.inc.php';
?>
<html>
<head>
<title>Confirmar registro</title>
</head>
<body>
<?php
$conexion = mysql_connect("localhost","xxxxxxxxxxxx","xxxxxxxxxxx");
mysql_select_db("xxxxxxxx", $conexion) or die (mysql_error());
$buscar = mysql_query("SELECT * FROM registros WHERE codigo='".$acode."'"); // Buscamos el codigo
if ($resultado = mysql_fetch_array($buscar)) // Si se encontro el codigo de verificacion seguimos
{
if (!mysql_query("DELETE FROM user_table WHERE codigo='".$acode."' LIMIT 1")) die (mysql_error()); // Borramos el registro para que no pueda reutilizar el codigo de verificacion.
if (!mysql_query("INSERT INTO user_table(username,password,email) values ('".$resultado['username']."','".$resultado['password']."','".$resultado['email']."')")) die (mysql_error()); // Ahora si registramos al usuario
echo "Has confirmado tu cuenta correctamente, <a href=\"index.php\">regresar</a>";
}
else // Si no encontro el codigo de verificacion, le damos error:
{
echo "El codigo de verificacion no es valido.";
}
?>
</body>
</html>

_________________
MI BLOG
www.diariodelinux.blogspot.com

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Sab Abr 23, 2011 4:50 pm 
Arriba  
a la sentencia sql le pasas como parámetro $acode cuando debería se $código. ya que es en $codigo que almacenas el valor recivido por $_GET

Citar:
$codigo = $_GET['acode']; <-- en $codigo almacenas el valor

$buscar = mysql_query("SELECT * FROM registros WHERE codigo='".$acode."'"); <-- en $acode no tienes nada NO existe debería ser $codigo



revisa eso por lo demás debería funcionar... no olvides de usar die para probar los valores de las variables

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  

Desconectado
Forista Medio
Forista Medio
Avatar de Usuario

Registrado: Mié Jul 30, 2008 11:00 pm
Mensajes: 379
Ubicación: Colombia/Valle del cauca/Yumbo

Nota Publicado: Sab Abr 23, 2011 5:22 pm 
Arriba  
ya lo corregi y parece que quiere funcionar pero me salto este error:

Access denied for user 'shruken1'@'localhost' to database 'localhost'

ya funciono quedo asi:

Código:
<?php
$acode = $_GET['acode'];

?>
<html>
<head>
<title>Confirmar registro</title>
</head>
<body>
<?php
$conexion = mysql_connect("localhost","shruken","XXXXXXX");
mysql_select_db("shruken1_trai", $conexion) or die (mysql_error());
$buscar = mysql_query("SELECT * FROM registros WHERE codigo='".$acode."'"); // Buscamos el codigo
if ($resultado = @mysql_fetch_array($buscar)) // Si se encontro el codigo de verificacion seguimos
{
if (!mysql_query("DELETE FROM user_table WHERE codigo='".$acode."' LIMIT 1")) die (mysql_error()); // Borramos el registro para que no pueda reutilizar el codigo de verificacion.
if (!mysql_query("INSERT INTO user_table(username,password,email) values ('".$resultado['username']."','".$resultado['password']."','".$resultado['email']."')")) die (mysql_error()); // Ahora si registramos al usuario
echo "Has confirmado tu cuenta correctamente, <a href=\"index.php\">regresar</a>";
}
else // Si no encontro el codigo de verificacion, le damos error:
{
echo "El codigo de verificacion no es valido.";
}
?>
</body>
</html>

creo que termine aprendiendo php de tanto intentar xDDDDDD

_________________
MI BLOG
www.diariodelinux.blogspot.com

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Dom Abr 18, 2010 4:30 pm
Mensajes: 2790
Ubicación: En una de las nalgas del culo del mundo (según la Bersuit Vergarabat)

Nota Publicado: Sab Abr 23, 2011 5:31 pm 
Arriba  
bueno me alegro que aya funcionado, si es el caso por favor edita el titulo del primer mensaje y agrégale ( SOLUCIONADO ) para que le sea útil a otros usuarios mediante el uso del buscador. gracias

_________________
... reinstalar un SO cuando produce un error es como tirar un bebe a la basura cuando se hace caca..

Trusted Network and Developer | Reglamento General de los Foros |WIKI-EL | Twitter @SISIAM
Debian| ArchLinux |Linux User #508809

 Perfil WWW  
Mostrar mensajes previos:  Ordenar por  
 [ 8 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC - 6 horas
Traducción al español por Huan Manwë
phpBB SEO