Foros del Web » Programando para Internet » PHP »

php recomendar Auxilio

Estas en el tema de php recomendar Auxilio en el foro de PHP en Foros del Web. Antes que nada, un saludo a todos ustedes, bueno me encontre en un libro antiguo de php 4 asi que me puse pasarlo a php5 ...
  #1 (permalink)  
Antiguo 19/01/2008, 17:02
Avatar de kerze  
Fecha de Ingreso: julio-2006
Mensajes: 28
Antigüedad: 17 años, 9 meses
Puntos: 0
Pregunta php recomendar Auxilio

Antes que nada, un saludo a todos ustedes, bueno me encontre en un libro antiguo de php 4 asi que me puse pasarlo a php5 el codigo, me imagino que esta bien, pero cuando lo ejecuto me sale este error
Cita:
Notice: Undefined index: accion in E:\EasyPHP 2.0b1\www\templates_nature\totora.php on line 2
lo he intentado arreglar con isset y otros pero no encuentro la forma de arreglarlo
alguien me puede echar una mano
Código PHP:
<?php 
if($_GET["accion"] == "") {
?>

<form method="post" action="totora.php?accion=enviar" name="recomienda">
<b>Recomienda este sitio</b><br><br>
Tu Nombre: <input type="text" name="n_remitente" size="10"><br>
Tu E-mail: <input type="text" name="e_remitente" size="20"><br>
Nombre de tu amigo: <input type="text" name="n_destinatario" size="10"><br>
E-mail de tu amigo: <input type="text" name="e_destinatario" size="20"><br><br>
<input type="submit" value="Recomendar">
</form>

<!-- envío del formulario y acuse de envío o información de errores -->
<?php
}

else if(
$_GET["accion"] == "enviar") {

// recojo las variables que vienen desde el formulario
$n_destinatario $_POST["n_destinatario"];
$e_destinatario $_POST["e_destinatario"];
$n_remitente $_POST["n_remitente"];
$e_remitente $_POST["e_remitente"];


  if (
$n_destinatario != "" && $e_destinatario != "" && $n_remitente != "" && $e_remitente != "") {


    
$url "http://www.laspalmerasdemoronacocha.com";

     
$nombre_del_sitio "Tu Sitio";

     
$asunto $n_remitente " te recomienda un sitio";

     
$mensaje "Hola " $n_destinatario ":<br>";
     
$mensaje .= $n_remitente " te recomienda que visites <b>" $nombre_del_sitio "</b>.<br>";
     
$mensaje .= "Puedes verlo en <a href='" $url "'>" $url "</a><br><br>Saludos!";



     
$encabezado "From:".$e_remitente."\nReply-To:".$e_remitente."\n";
     
$encabezado .= "X-Mailer:PHP/".phpversion()."\n";
     
$encabezado .= "Mime-Version: 1.0\n";
     
$encabezado .= "Content-Type: text/html";



     
mail($e_destinatario,$asunto,$mensaje,$encabezado);



     echo 
"<b>El mensaje ha sido enviado</b>.<br>Gracias por recomendarnos!";

     }



     else {

     echo 
"Por favor, es necesario que completes todos los campos.<br>";
     echo 
"<a href='./'>click aqui</a> para corregir los campos.";

     }

}
?>
  #2 (permalink)  
Antiguo 19/01/2008, 18:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: php recomendar Auxilio

Debes de comparar el campo antes de accesarlo, algo asi:
Código PHP:
$accion = isset( $_GET['accion'] ) ? $_GET['accion'] : "";

// Luego ya comparas:
if( $accion "" ) { 
Saludos.
  #3 (permalink)  
Antiguo 19/01/2008, 18:53
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: php recomendar Auxilio

Código:
Notice: Undefined index: accion in E:\EasyPHP 2.0b1\www\templates_nature\totora.php on line 2
Bueno, como ya sabes, ese error te dice que no hay ninguna variable 'accion' pasada por GET.
Cita:
Iniciado por kerze
lo he intentado arreglar con isset y otros pero no encuentro la forma de arreglarlo
Pues, precisamente, ésa es la forma de controlar este tipo de errores.

Con esa variable (y con todas), tienes que pensar:
- ¿Está definida?
- ¿Qué valores puede tomar?

Entonces antes de utilizar la variable, asegúrate que esté definida. Entonces tienes que saber qué hacer en el caso de que no exista.
Una vez que validaste que existe, piensa en los posibles valores que pueda tomar. En tu caso pueden ser "" (cadena vacía) o la cadena "enviar". Entonces tienes que ponerte en el caso de que esa variable tome un valor diferente. Si alguien escribe en la url ?accion=cualquiercosa ¿qué debe hacer el script?

Finalmente, puedes acomodar las cosas:
Código PHP:
<?php
if( isset($_GET['accion']) && $_GET['accion'] == 'enviar' ){
    
// recojo las variables que vienen desde el formulario
    // ...
    //etc, etc, etc...
}else{
    
// Poner el formulario
    // <form method="post" action="totora.php?accion=enviar" name="recomienda">
    // etc, etc, etc...
}
?>
Saludos
  #4 (permalink)  
Antiguo 19/01/2008, 19:30
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 225
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: php recomendar Auxilio

bueno algo para q ese mensaje no te salga puede ser colocarlas en la parte superior del script de esta forma las declararias y no te saldria ese error easy php tiene activada la opcion de mostrar todos los errores por eso es q te sale mas eso no deberia salirte jaja pero bueno lo q dice jpinedo es muy cierto tenes q controlarlas muy bien ok hasta luego
  #5 (permalink)  
Antiguo 20/01/2008, 08:28
Avatar de kerze  
Fecha de Ingreso: julio-2006
Mensajes: 28
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: php recomendar Auxilio

gracias manes los de este foro son todo una ayuda agrego 10 puntos a los que me apoyan.
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 19:21.