Autor Tema: Fallo en codigo  (Leído 826 veces)

Desconectado Hypertext Pre-processor

  • PHPer@
  • **
  • Mensajes: 88
  • Karma: 0
  • Sexo: Masculino
  • Queriendo Aprender : )
    • Ver Perfil
    • Mi Blog
Fallo en codigo
« en: 13 de Junio de 2013, 22:32:27 pm »
Hola, tengo este código y no me funciona, he intentado hacer de todo para que funcione pero no.
Notice: Undefined index: usuario in C:\xampp\htdocs\Servidor\11\index.php on line 2
Código: [Seleccionar]
<?php
if($_COOKIE["usuario"] and $_COOKIE[&#39;contrasena&#39;])

echo 
"Hola";

else {
?>


<form method="POST" action="entrador.php">
<p>Usuario:<br>
<input type="text" name="usuario" size="20"><br>
Contraseña:<br>
<input type="password" name="contrasena" size="20"><br>
<input type="submit" value="OK" name="OK"></p>
</form><br>
<a href="registrador.php">¡Registrate!</a>
<?php
}
?>


Comunidad PHPeros

Fallo en codigo
« en: 13 de Junio de 2013, 22:32:27 pm »

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #1 en: 19 de Junio de 2013, 13:11:34 pm »
Intenta con && en vez de and?

Desconectado Hypertext Pre-processor

  • PHPer@
  • **
  • Mensajes: 88
  • Karma: 0
  • Sexo: Masculino
  • Queriendo Aprender : )
    • Ver Perfil
    • Mi Blog
Re:Fallo en codigo
« Respuesta #2 en: 19 de Junio de 2013, 13:22:34 pm »
me sale lo siguiente
Código: [Seleccionar]
Notice: Undefined index: usuario in C:\xampp\htdocs\Servidor\20\index.php on line 2

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #3 en: 19 de Junio de 2013, 14:18:39 pm »
Usa ' ' en vez de " " ?

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #4 en: 19 de Junio de 2013, 14:37:27 pm »
Código: [Seleccionar]
if(@$_COOKIE["usuario"] and @$_COOKIE['contrasena']) y no pongas &&, eso es un condicional arrancaría el if si contrasena o usuario estuvieran cada uno por su lado.

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #5 en: 19 de Junio de 2013, 16:43:08 pm »
Código: [Seleccionar]
if(@$_COOKIE["usuario"] and @$_COOKIE['contrasena']) y no pongas &&, eso es un condicional arrancaría el if si contrasena o usuario estuvieran cada uno por su lado.


a que te refieres con "cada uno por su lado" ? if() && () asi?

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #6 en: 19 de Junio de 2013, 23:19:47 pm »
AND comprueba ambos, por ejemplo:
Código: [Seleccionar]
if ($hola and $adios)
Tendrían que existir ambas variables.

&& comprueba que de los insertados sea uno, por ejemplo;
Código: [Seleccionar]
if ($hola && $adios)
Tendría que existir solo una de variables.

Saludos cordiales.

Desconectado X73mP

  • PHPerit@
  • *
  • Mensajes: 3
  • Karma: 1
  • Nuev@ PHPer@
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #7 en: 20 de Junio de 2013, 18:31:49 pm »
Primero que nada quiero aclarar que las respuestas que te dieron son totalmente erróneas; la anotación que te da no es por usar comillas dobles en vez de simples, ni por usar and en vez de && (notese que también es válido).

Lo que realmente sucede es que PHP, por seguridad y por debug te advierte que estas intentando acceder a una variable que no existe, es decir, que aún no ha sido creada; suele suceder mucho en scripts con versiones de PHP recientes. Sin embargo, es solo una "nota", no es un error ni hace que el script funcione incorrectamente.

En tu caso, estas intentado usar dos keys del array COOKIE, pero al no estar definidas anteriormente, te advierte que probablemente sea un fallo.

Para solucionar ésto tenemos dos opciones:

La correcta (usando la función isset()):

Código: (php) [Seleccionar]
<?php
if(isset($_COOKIE["usuario"]) and isset($_COOKIE[&#39;contrasena&#39;])){ 
    
echo "Hola";
}else{
?>


<form method="POST" action="entrador.php">
<p>Usuario:<br>
<input type="text" name="usuario" size="20"><br>
Contraseña:<br>
<input type="password" name="contrasena" size="20"><br>
<input type="submit" value="OK" name="OK"></p>
</form><br>
<a href="registrador.php">¡Registrate!</a>
<?php
}
?>

La informal pero válida (usando operadores terniarios):
Código: (php) [Seleccionar]
<?php
$_COOKIE
[&#39;usuario&#39;] = (isset($_COOKIE[&#39;usuario&#39;])) ? $_COOKIE[&#39;usuario&#39;] : &#39;&#39;;
$_COOKIE[&#39;contrasena&#39;] = (isset($_COOKIE[&#39;contrasena&#39;])) ? $_COOKIE[&#39;contrasena&#39;] : &#39;&#39;;
if($_COOKIE["usuario"] and $_COOKIE[&#39;contrasena&#39;]){ 
    
echo "Hola";
}else{
?>


<form method="POST" action="entrador.php">
<p>Usuario:<br>
<input type="text" name="usuario" size="20"><br>
Contraseña:<br>
<input type="password" name="contrasena" size="20"><br>
<input type="submit" value="OK" name="OK"></p>
</form><br>
<a href="registrador.php">¡Registrate!</a>
<?php
}
?>

¿Qué hacemos en ésta última?, declaramos que si los valores del array existen, los deje igual, sino cree la variable con cualquier texto (puede usarse null).

Saludos,
Xt3mP.

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #8 en: 20 de Junio de 2013, 21:12:24 pm »
La solución mas simple es ocultar el error, y lo puse arriba y no dije nada erróneo si te molestas en leer detenidamente te darás cuenta...

Desconectado Hypertext Pre-processor

  • PHPer@
  • **
  • Mensajes: 88
  • Karma: 0
  • Sexo: Masculino
  • Queriendo Aprender : )
    • Ver Perfil
    • Mi Blog
Re:Fallo en codigo
« Respuesta #9 en: 20 de Junio de 2013, 21:31:54 pm »
Gracias a todos por ayudar, pero he decidido buscar por internet manuales y tutoriales de $_COOKIE, lo importante no es saber hacerlo, si no entenderlo por que si lo entiendo se hacerlo. (Gracias a todos por ayudar  :) )
Código: [Seleccionar]
<?php

      
if (isset($_COOKIE[&#39;visita&#39;])) {

        
echo "Gracias por visitarnos nuevamente";

     } else {

        
setcookie("visita""ok"time() + 31536000);

        echo 
"Bienvenido por primera vez";

     }

?>

Desconectado iStocker

  • PHPer@ Fijo
  • ***
  • Mensajes: 104
  • Karma: 6
  • ~ єssєитιαʟ ~
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #10 en: 21 de Junio de 2013, 03:57:03 am »
La solución mas simple es ocultar el error, y lo puse arriba y no dije nada erróneo si te molestas en leer detenidamente te darás cuenta...
El operador lógico and también puede ser utilizado con dos ampersand, osease, &&.

Tú lo que dices es que el operador and y && tienen una función diferente, pero es la misma, el usuario te corrigió & yo lo vuelvo a hacer, si no me crees ejecuta lo siguiente cambiando && por and y viceversa.

Código: [Seleccionar]
<?php
$arova 
true;
$otro false;

if(
$arova && $otro)
{
echo 
"ambos valores son verdaderos";
}
else
{
echo 
"uno de los valores no es verdadero";
}
?>
¡FUUU!


Cita de: Mary Shaw
Menos del 10% del código tienen que ver directamente con el propósito del sistema; el resto tiene que ver con la entrada y salida, validación de datos, mantenimiento de estructuras de datos y otras labores domésticas



[/cent

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #11 en: 21 de Junio de 2013, 10:24:25 am »
Llevas razón me confundí con ||, gracias por la explicación  :-[

Saludos

Desconectado x.mara.x

  • PHPero Master
  • ******
  • Mensajes: 1.364
  • Karma: 57
  • Sexo: Femenino
    • Ver Perfil
Re:Fallo en codigo
« Respuesta #12 en: 21 de Junio de 2013, 11:36:33 am »
El operador lógico and también puede ser utilizado con dos ampersand, osease, &&.

Tú lo que dices es que el operador and y && tienen una función diferente, pero es la misma, el usuario te corrigió & yo lo vuelvo a hacer, si no me crees ejecuta lo siguiente cambiando && por and y viceversa.

Código: [Seleccionar]
<?php
$arova 
true;
$otro false;

if(
$arova && $otro)
{
echo 
"ambos valores son verdaderos";
}
else
{
echo 
"uno de los valores no es verdadero";
}
?>

Ya decia yo.. haha se me olvidaron las cosas pero no tanto al final