Foros del Web » Programando para Internet » PHP »

Problema con variables.

Estas en el tema de Problema con variables. en el foro de PHP en Foros del Web. Buenos dias, tengo el siguiente problema con un sistema para introducir codigo de seguridad a los formularios: INICIO SESION EN LA PAGINA Código: <?php session_start(); ...
  #1 (permalink)  
Antiguo 03/01/2006, 06:26
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Exclamación Problema con variables.

Buenos dias, tengo el siguiente problema con un sistema para introducir codigo de seguridad a los formularios:


INICIO SESION EN LA PAGINA
Código:
<?php
session_start(); // Iniciamos la sesion
$numero_aleatorio = rand(100000,999999); // Generamos el numero secreto
$_SESSION[codigoact] = $numero_aleatorio; // Guardamos el numero secreto en la sesion
?>
RECOJO VALOR DE LA SESION

Código:
<?php
$confirmacion= stripslashes($_POST['confirmacion']);
?>

COMPRUEBO QUE EL VALOR DE CODIGOACT ES IGUAL AL DATO INTRODUCIDO EN CONFIRMACION

Código:
<?php
if($confirmacion == $_SESSION[codigoact]) die("Codigo incorrecto");
?>
He aqui el problema, por mas codigo que ponga siempre es correcto, no esta comprobando si es correcto o no.

Tengo una linea que comprueba otro dato nada que ver con la $_SESSION que si me funciona. Es el siguiente:

Código:
<?php
if ($password != $password2) die("Las passwords no coinciden.");
?>
El de la password si comprueba los 2 valores, pero el de "confirmacion y codigoact" no lo hacen.

Alguien me puede ayudar plz =)
  #2 (permalink)  
Antiguo 03/01/2006, 06:30
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Otra cosa...

Tambien acotar que si pongo un signo de admiracion en vez de un signo igual me dice que el codigo es incorrecto.

Código:
<?php
if($confirmacion != $_SESSION[codigoact]) die("Codigo incorrecto");
?>
  #3 (permalink)  
Antiguo 03/01/2006, 07:21
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
hola .. ayudaria mas si pones todo el codigo fuente de lo que estas haciendo ... ayudaria a entender el problema .. saludos ..
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #4 (permalink)  
Antiguo 03/01/2006, 08:00
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Es muy largo jejej

Es largo. Es sencillo lo explico paso a paso ahi, mi problema esta a la hora de comprobar si un valor es igual a otro.
  #5 (permalink)  
Antiguo 03/01/2006, 08:25
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Haz comprobado que contienen cada una de las variables, $confirmacion y $_SESSION[codigoact] ??
Puedes hacerlo facilmente imprimiendo en pantalla su valor con echo()
  #6 (permalink)  
Antiguo 03/01/2006, 10:33
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
He aqui el problema

Hice lo que me dijistes y recibo un codigo de session distinto al introducido...

Porque cambia el valor del codigo? si la session esta abierta y no se cerro en ningun momento?
  #7 (permalink)  
Antiguo 03/01/2006, 10:42
 
Fecha de Ingreso: diciembre-2004
Mensajes: 114
Antigüedad: 19 años, 3 meses
Puntos: 0
Pasas por varios archivos PHP?

Si pasas por varios tienes que iniciar la session en la cabecera de todos los archivos
  #8 (permalink)  
Antiguo 03/01/2006, 11:02
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Nop

Es siempre el mismo php, vamos el formulario este en el mismo php.

CABECERA:

Código PHP:
<?php

require_once ("sql_inject.php");
include_once (
"sql_check.php");
check_inject();
$bDestroy_session TRUE;
$url_redirect 'index.php';
$sqlinject = new sql_inject('logs/log_file_sql.log',$bDestroy_session,$url_redirect)  ;

session_start(); // Iniciamos la sesion
$numero_aleatorio rand(100000,999999); // Generamos el numero secreto
$_SESSION[codigoact] = $numero_aleatorio// Guardamos el numero secreto en la sesion

?>
SCRIPT:

Código PHP:
<?php
if ($aaccountmaker != "CHECKED")
{
    echo 
"El php no esta habilitado. Comunicate con el administrador en ".$adminemail.".<br>";
}
else
{
    if (!
$_POST)
    {
        echo 
'<form action='.$_SERVER['PHP_SELF'].' method="post">
        <table width="541" border="0" align="center">
          <tr>
            <td width="152"><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Nombre de la Cuenta: </font></strong></div></td>
            <td width="379"><strong><font color="#FF6600" size="1">
            <input name="Account" type="text" size="10" maxlength=10 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;            ( M&aacute;ximo 10 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Password:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="password" type="password" size="10" maxlength=10 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;            ( M&aacute;ximo 10 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Repite  Password:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="password2" type="password" size="10" maxlength=10 >
            <font face="Verdana, Arial, Helvetica, sans-serif"></font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">E-M@il:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="email" type="text" size="40" maxlength=45 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;            ( M&aacute;ximo 45 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
            <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Repite E-m@il:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="email2" type="text" size="40" maxlength=45 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;            ( M&aacute;ximo 45 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Nombre Real:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="realname" type="text" size="30" maxlength=30 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;            ( M&aacute;ximo 30 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Edad:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
              <input name="aAge" type="text" id="aAge" size="2" maxlength=2 >
            </font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Pregunta:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
              <select name="question">
                <option value="" selected>[Elige una pregunta para responder]
                <option value="¿Cómo se llama tu mascota?" >¿Cómo se llama tu mascota?
                </select>
            </font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">Respuesta:</font></strong></div></td>
            <td><strong><font color="#FF6600" size="1">
            <input name="answer" type="text" size="20" maxlength=20 >
            <font face="Verdana, Arial, Helvetica, sans-serif">&nbsp;( M&aacute;ximo 20 Caracteres )</font></font></strong></td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">C&oacute;digo Seguridad:</font></strong></div></td>
            <td><img src="http://www.hbkhispano.net/imagen.php"></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="right"><strong><font size="2" face="Arial, Helvetica, sans-serif">C&oacute;digo</font></strong>:</div></td>
            <td><strong><font color="#FF6600" size="1">
              <input name="confirmacion" type="text" id="confirmacion" size="6" maxlength="6">
            </font></strong></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td><div align="right"></div></td>
            <td><font color="#FF6600">&nbsp;</font></td>
          </tr>
          <tr>
            <td colspan="2"><div align="center">
              <input name="Registrarme" type="submit" id="Registrarme2" value="Registrarme">
              <input name="Cancelar" type="reset" id="Reestablecer2" value="Cancelar">
              </div></td>
          </tr>
        </table>
        <p>        <br>
        <br>
        '
.'
        </p>
</form>
'
;
        
    }
    else 
    {
        
$Accountstripslashes($_POST['Account']);
        
$passwordstripslashes($_POST['password']);
        
$password2stripslashes($_POST['password2']);
        
$aAgestripslashes($_POST['aAge']);
        
$emailstripslashes($_POST['email']);
        
$email2stripslashes($_POST['email2']);
        
$qstripslashes($_POST['question']);
        
$astripslashes($_POST['answer']);
        
$realnamestripslashes($_POST['realname']);
        
$confirmacionstripslashes($_POST['confirmacion']);
        
        if (
$password != $password2) die("Las passwords no coinciden.");
        
        if(
$confirmacion == $_SESSION[codigoact]) die("El codigo de seguridad introducido no es correcto.");
        
        if (
$email != $email2) die("Los correos electronicos introducidos no coinciden, recuerda que es importante que utilices una cuenta valida ya que es la que utilizaras para recuperar tu password en una futura ocacion.");
        
        if(!
ereg(".",$email) or !ereg("@",$email)) die("El mail no tiene un formato válido.");
        
        if ((
eregi("[^a-zA-Z0-9_-]"$Account)) ||
          (
eregi("[^a-zA-Z0-9_-]"$password)) ||
          (
eregi("[^a-zA-Z0-9_-]"$password2)) ||
          (
eregi("[^a-zA-Z0-9_-]"$aAge)) ||
          (
eregi("[^a-zA-Z0-9.@_-_-]"$email)) ||
          (
eregi("[^a-zA-Z0-9.@_-_-]"$email2)) ||
          (
eregi("[^a-zA-Z0-9_-?-¿-]"$question)) ||
          (
eregi("[^a-zA-Z0-9_-]"$answer)) ||
          (
eregi("[^a-zA-Z0-9_-]"$realname)) )
    {
    echo(
"Has introducidos caracteres no validos. Favor usar solo letras (a-Z) y numeros (0-9)!");
        exit();
    }
        
        
$Account trim($Account);
        
$password trim($password);
        
$actualdate date("d/m/Y h:i:s a");
        
$ip=getenv("REMOTE_ADDR");
        
        @
$msconnect=mssql_connect("$dbhost","$dbuser","$dbpasswd");
        if (
$msconnect
        {
            
mssql_select_db($dbml$msconnect);
            
$qclonaccmssql_query ("select * from ACCOUNT_T where cAccountID ='".$Account."'",$msconnect);
            if (
mssql_num_rows($qclonacc)!= 0) die("La Account ya existe, por favor elegí otra.");
            
mssql_free_result($qclonacc);
            
$qaccidrow mssql_query ("select * from ACCOUNT_T",$msconnect);
            
$Accountid mssql_num_rows($qaccidrow) + XXXXXXXX;
            
mssql_query ("INSERT INTO ACCOUNT_T VALUES ('".$Account."','".$password."', '".$Accountid."', '".$ip."', NULL, '".$actualdate."', NULL, NULL, NULL, '".$realname."', NULL,'".$email."', NULL, '".$q."', '".$a."', '".$actualdate."', '990000', NULL, NULL, '".$aAge."')"$msconnect );
            
            
mssql_free_result($qaccidrow);
            echo 
"Muchas gracias, por registrarte, ya podes empezar a jugar.";
            
mssql_close($msconnect);
        }
        else { echo 
"No se pudo conectar con la base de datos.<br>Comunicate con el administrador del server en <a href='mailto:".$adminemail."'>".$adminemail."</a><br>"; }
    }
}
?>
  #9 (permalink)  
Antiguo 03/01/2006, 11:03
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Ahi esta el script completo.

Aqui muestro el script.
  #10 (permalink)  
Antiguo 04/01/2006, 11:09
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Ayudita

Nadie me hecha una mano?
  #11 (permalink)  
Antiguo 04/01/2006, 11:25
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
yo no observo que en ningun lado estes recibiendo el valor $confirmacion
Código PHP:
$conf2 $_POST["$confirmacion"]; 
  #12 (permalink)  
Antiguo 04/01/2006, 11:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En tu "script" (el segundo código que así titulas) donde haces uso de session_start() (que es necesario e inprescindible para pretender acceder a tus variables de sesión?). o "cabecera" y "script" es el mismo script? .. si es así indica el codigo tal cual sea .. se confunde.

Donde tengas que acceder a tus variables de sesión:

$_SESSION[codigoact]
usa:
$_SESSION['codigoact']

$_SESSION es un array al fin y al cambo .. tratalo como tal.

Un saludo,
  #13 (permalink)  
Antiguo 04/01/2006, 11:29
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
tiene toda la razón Cluster
  #14 (permalink)  
Antiguo 06/01/2006, 12:11
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Voy a probar, MIL GRACIAS CLUSTER !!!!
  #15 (permalink)  
Antiguo 06/01/2006, 12:16
 
Fecha de Ingreso: diciembre-2005
Mensajes: 87
Antigüedad: 18 años, 3 meses
Puntos: 3
Cluster tanto la cabecera como el script esta en el mismo archivo, "nuevacuenta.php".-

He probado lo que me dijistes pero sigue sin funcionar.-
  #16 (permalink)  
Antiguo 06/01/2006, 13:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si ese script realiza varias acciones (un formulario y su proceso en el mismo script) .. como es que defines la variable de sesión desde la "cabecera" del mismo? .. deberías generar esa variable de sesión cuando presentas el formulario y lerla cuando proceses eso datos (para eso ya tienes un "if()"):

Código PHP:
Session_start();

if (!empty(
$_POST)) {
$_SESSION['codigo'] = $tu_codigo_generado;
// tu formualio
} else {
echo 
"Valor variable sesión: ".$_SESSION['codigo'];

Intenta usar un ejemplo más simple de uso de sesiones. Si no te funciona .. tendrás problemas con la propagación del SID.

No sé como propagas el SID en tu aplicación (no se vé que lo hagas manualmente) .. así que dejas a PHP y su configuración este punto. Si el SID no se propaga .. no podras acceder a los valores de tu sesión.

Te recomiendo leer sobre sesiones de PHP en:
www.php.net/session
(sobre todo sobre el concepto del "SID")

Un saludo,
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 17:12.