PHP - Undexfinex $_GET

 
Vista:
Imágen de perfil de Tomás

Undexfinex $_GET

Publicado por Tomás (81 intervenciones) el 17/11/2013 11:28:58
Hola, muy buenas.

Dispongo de este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?php include "../src/config.php"; ?>
<?php
 
$email = $_GET['email'];
$key = $_GET['key'];
 
$selecg = mysqli_query($conexion, "SELECT codenr FROM sendes")or die(mysqli_error());
$debugg = mysqli_fetch_assoc($selecg);
$de1 = mysqli_query($conexion, "SELECT * FROM sendes WHERE email = '".$email."'")or die(mysqli_error());
$de2 = mysqli_query($conexion, "SELECT * FROM sendes WHERE codenr = '".$key."'")or die(mysqli_error());
 
if(mysqli_num_rows($de1) < 1){
            echo "Lo sentimos pero el mail seleccionado no está registrado en sends.";
        }
        else if(mysqli_num_rows($de2) < 1){
            echo "<meta http-equiv='Refresh' content='0;http://localhost'>";
        }
?>
<!DOCTYPE html>
<html lang="es" />
    <head>
        <title>  Nueva contraseña</title>
        <link href="../src/style.css" rel="stylesheet" />
        <meta charset="UTF-8" />
    </head>
    <body>
 
    <!-- Header (logo lugarfecha) -->
    <div class="header">
    <div class="headerizq">
 
    <div class="logo"></div>
 
    </div>
    <div class="headerder">
 
    <div class="lugarfecha"><center> <?php $luguenfecha = date("d-m-Y"); echo "<font color='0378b4'>Hoy es: ".$luguenfecha."</font>"; ?> </center> </div>
 
    </div>
    </div>
    <!-- Fin header -->
    <!-- Empezando el fondo del login -->
    <div class="fondmar1"></div>
    <div class="fondmar2">
 
    <div class="logo2"></div>
 
    <center> <form action="" method="POST">
    <input type="password" name="password" placeholder="Nueva clave"><br><br>
    <input type="password" name="repassword" placeholder="Repita la nueva clave"><br><br>
    <input type="text" name="preguntasegura" placeholder="Escriba: Sends"><br><br>
    <input type="submit" name="nuevaclave" value="Guardar Cambios">
 
    <?php
 
    if(isset($_POST['nuevaclave'])){
        $lanewclavelink = mysqli_query($conexion, "SELECT * FROM sendes WHERE email = '".$email."' AND codenr = '".$key."'")or die(mysqli_error());
        $nuevaclave = utf8_decode(mysqli_real_escape_string($conexion, $_POST['password']));
        $nuevaclave2 = utf8_decode(mysqli_real_escape_string($conexion, $_POST['repassword']));
        $clavve = md5($nuevaclave);
        $codenr2 = rand(1, 9999999);
        $codenr1 = md5($codenr2);
        $preguntasegura = "Sends";
        if($_POST['password'] == '' or $_POST['repassword'] == '' or $_POST['preguntasegura'] == ''){
            echo "Lo sentimos pero no puede quedar ningún campo en blanco.";
        }
        else if($_POST['password'] != $_POST['repassword']){
            echo "Las contraseñas no coinciden.";
        }
        else if($_POST['preguntasegura'] != $preguntasegura){
            echo "Lo sentimos pero has escrito mal la pregunta de seguridad. Escriba: Sends";
        }
        else{
            $duda = mysqli_fetch_assoc($lanewclavelink);
            $ya = mysqli_query($conexion, "UPDATE sendes SET password = '".$clavve."' WHERE email = '".$email."' AND codenr = '".$key."'")or die(mysqli_error());
            $ya2 = mysqli_query($conexion, "UPDATE sendes SET codenr = '".$codenr1."' WHERE email = '".$email."'")or die(mysqli_error());
            echo "Guardado correctamente. Ya dispones de tu nueva contraseña para acceder a Sends.";
        }
    }
 
    ?>
 
    </div>
    <div class="fondmar3"></div>
    <!-- Fin del fondo del login -->
 
    <div class="footer"> <a href="#">Información</a> - All rights reserved (2014/2015) - Www.Sends.Eu </div>
 
    <div class="public"></div>
    <div class="public2">
        Publicidad
    </div>
    <div class="public3"></div>
 
    </body>
</html>


Y si entro asín al archivo:

1
?email=sanchezgarciatomas@gmail.com&key=0557961c2b32511050515fe2970cf802

De lujo.

Pero si en la url no pongo

1
?email=sanchezgarciatomas@gmail.com&key=0557961c2b32511050515fe2970cf802

Quiero que me redireccione a otro lugar.
Pero me da el siguiente error:

1
2
3
4
Notice: Undefined index: email in C:\myxampp\htdocs\9e05b4e4ac8darestor2ad4feb6823938e3ac4\index.php on line 4
 
Notice: Undefined index: key in C:\myxampp\htdocs\9e05b4e4ac8darestor2ad4feb6823938e3ac4\index.php on line 5
Lo sentimos pero el mail seleccionado no está registrado en la db.

Y la línea 4 y 5 son estas:

1
2
$email = $_GET['email'];
$key = $_GET['key'];

Y cómo pueden ver están definidas.
¿Qué puede ocurrir?.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Undexfinex $_GET

Publicado por Mari Carmen (145 intervenciones) el 17/11/2013 16:11:01
No están definidas. Cuando la variable que le pasas por get no existe, obviamente es un indice en el array de variables get que no está definido. Para evitar esto se usa isset().
La forma en la que yo definiría esas variables es la siguiente:
1
2
$email=((isset($_GET['email']) && !empty($_GET['email']))?$_GET['email']:false);
$key=((isset($_GET['key']) && !empty($_GET['key']))?$_GET['key']:false);
Esto es igual que hacer un if de la forma:
1
2
3
4
5
if(isset($_GET['key']) && !empty($_GET['key'])){
    $key=$_GET['email'];
}else{
    $key=false;
}

y luego se hace un condicional que detecte si están bien definidas o no:
1
2
3
4
5
6
7
8
9
10
if($email && $key)
{
   //Haz lo que tengas que hacer si existen.
}
/////    O
if($email===false && $key ===false)
{
    die("las variables de entrada no están definidas");
}
//Lo que tengas que hacer si existen


Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Tomás

Undexfinex $_GET

Publicado por Tomás (81 intervenciones) el 17/11/2013 16:31:04
Muchas gracias,

Las definí asín:

1
2
$email=((isset($_GET['email']) && !empty($_GET['email']))?$_GET['email']:false);
$key=((isset($_GET['key']) && !empty($_GET['key']))?$_GET['key']:false);

Y no me da ningún problema muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar