Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: kosis157 en 31 Marzo 2007, 20:32 pm



Título: error en mandar un formulario
Publicado por: kosis157 en 31 Marzo 2007, 20:32 pm
Hola estoy haciendo un formulario y al ejecutarlo de mi PC me sale un error, PHP Notice: Undefined variable: HTTP_GET_VARS in C:\Inetpub\wwwroot\contactar\index.php on line 17 y la liena 17 es:

if ($HTTP_GET_VARS["accion"] == "")
Tambien os dejo el código para verlo mejor  ;)

Código:
<table width="200" border="0" align="center" cellpadding="0" cellspacing="0" class="subcategoryWeb">
  <tr>
    <td>- Contactar - </td>
  </tr>
</table>
<p>&nbsp;</p>
<?php
if ($HTTP_GET_VARS["accion"] == "") {
?> 
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="159"><table width="159" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td width="595">
        <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#2D2D2D">
          <tr>
            <td><form action="index.php?accion=enviar" method="post" name="contacto">
                <table width="75%" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td class="table2">Tu nombre: </td>
                    <td><input name="name" type="text" id="name" class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu email:</td>
                    <td><input name="email" type="text" id="email"  class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu asunto: </td>
                    <td><label>
                      <select name="asunto" class="table" id="asunto">
                        <option>- Seleccionar Opcio -</option>
                        <option>Sugerencia</option>
                        <option selected="selected">Colaborar</option>
                      </select>
                    </label></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu comentario: </td>
                    <td><textarea name="com" rows="5" class="table" id="com"></textarea></td>
                  </tr>
                </table>
              <p align="center">
                  <input type="submit" name="Submit" value="enviar" />
              </p>
            </form></td>
          </tr>
        </table>

    </td>
  </tr>
</table>
<p>&nbsp;</p>
<?php
}else{
if ($HTTP_GET_VARS["accion"] == "enviar"){
$email = $HTTP_POST_VARS["email"];
$nombre = $HTTP_POST_VARS["nombre"];
$com = $HTTP_POST_VARS["com"];
if($email == "" || $com== ""){
echo'Rellena los campos vacios.<a href=javascript:history.go(-1)>Atr&aacute;s</a>';
}else{
$to = "zak@hotmail.com";
$subject = "Contactar";
$msg="Hola tienes un formulario enviado:\nSu nombre: " .$name. " \n Su e-mail: " .$email ." \n Su descripci&oacute;n: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>


Título: Re: error en mandar un formulario
Publicado por: Luisango en 1 Abril 2007, 00:54 am
El error te dice que no se ha declarado la variable antes, solo declarala, en este caso como es GET pues la tienes que poner en la URL de esta forma:

Código:
archivo.php?accion=elvalorquequierasquetome

si lo haces desde un formulario, cambialo al modo get y si te parece un lio (y claro, esto viene de un formulario) y lo tienes el formulario en modo post cambia:
Código:
<?php
$HTTP_GET_VARS[accion]
//  POR ESTO:
$HTTP_POST_VARS[accion]
// O ESTO, EN ESTE CASO DA IGUAL
$_POST[accion]
?>
 

Espero haberte ayudado
Un saludo!


Título: Re: error en mandar un formulario
Publicado por: kosis157 en 1 Abril 2007, 12:22 pm
uff una vez cambiado me sigue saliendo un error:

PHP Notice: Undefined index: accion in C:\Inetpub\wwwroot\contactar\index.php on line 25

la linea 25: if ($_POST["accion"] == "") {
weno creo esa variable sólo para que el usuario que entre se le vaya al formulario y una vez ponga en enviar vaya a la accion send y asi enviarme el email no me vienen de ningun formualrio solo es para ahorrar otro archivo para hacer el revisar. te dejo lo que he cambiado:

Código:
<?php
/*
$HTTP_GET_VARS[accion]
//  POR ESTO:
$HTTP_POST_VARS[accion]
// O ESTO, EN ESTE CASO DA IGUAL
$_POST[accion]*/
?>
<?php
if ($_POST["accion"] == "") {
?> 
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="159"><table width="159" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td width="595">
        <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#2D2D2D">
          <tr>
            <td><form action="index.php?accion=enviar" method="post" name="contacto">
                <table width="75%" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td class="table2">Tu nombre: </td>
                    <td><input name="name" type="text" id="name" class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu email:</td>
                    <td><input name="email" type="text" id="email"  class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu asunto: </td>
                    <td><label>
                      <select name="asunto" class="table" id="asunto">
                        <option>- Seleccionar Opcio -</option>
                        <option>Sugerencia</option>
                        <option selected="selected">Colaborar</option>
                      </select>
                    </label></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu comentario: </td>
                    <td><textarea name="com" rows="5" class="table" id="com"></textarea></td>
                  </tr>
                </table>
              <p align="center">
                  <input type="submit" name="Submit" value="enviar" />
              </p>
            </form></td>
          </tr>
        </table>

    </td>
  </tr>
</table>
<p>&nbsp;</p>
<?php
}else{
if ($_POST["accion"] == "enviar"){
$email = $HTTP_POST_VARS["email"];
$nombre = $HTTP_POST_VARS["nombre"];
$com = $HTTP_POST_VARS["com"];
if($email == "" || $com== ""){
echo'Rellena los campos vacios.<a href=javascript:history.go(-1)>Atr&aacute;s</a>';
}else{
$to = "zak@hotmail.com";
$subject = "Contactar";
$msg="Hola tienes un formulario enviado:\nSu nombre: " .$name. " \n Su e-mail: " .$email ." \n Su descripci&oacute;n: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>


Título: Re: error en mandar un formulario
Publicado por: Luisango en 1 Abril 2007, 12:31 pm
mira, ya se por que es, siento no darme cuenta antes, mira:
Código:
<?php
/*
$HTTP_GET_VARS[accion]
//  POR ESTO:
$HTTP_POST_VARS[accion]
// O ESTO, EN ESTE CASO DA IGUAL
$_POST[accion]*/
?>
<?php
if ($_GET["accion"]) {
?> 
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="159"><table width="159" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td width="595">
        <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#2D2D2D">
          <tr>
            <td><form action="index.php?accion=enviar" method="post" name="contacto">
                <table width="75%" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td class="table2">Tu nombre: </td>
                    <td><input name="name" type="text" id="name" class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu email:</td>
                    <td><input name="email" type="text" id="email"  class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu asunto: </td>
                    <td><label>
                      <select name="asunto" class="table" id="asunto">
                        <option>- Seleccionar Opcio -</option>
                        <option>Sugerencia</option>
                        <option selected="selected">Colaborar</option>
                      </select>
                    </label></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu comentario: </td>
                    <td><textarea name="com" rows="5" class="table" id="com"></textarea></td>
                  </tr>
                </table>
              <p align="center">
                  <input type="submit" name="Submit" value="enviar" />
              </p>
            </form></td>
          </tr>
        </table>

    </td>
  </tr>
</table>
<p>&nbsp;</p>
<?php
}else{
if ($_GET["accion"] == "enviar"){
$email = $_POST["email"];
$nombre = $_POST["nombre"];
$com = $_POST["com"];
if($email == "" || $com== ""){
echo'Rellena los campos vacios.<a href=javascript:history.go(-1)>Atr&aacute;s</a>';
}else{
$to = "mtp1268@ww1.edu365.com";
$subject = "Contactar";
$msg="Hola tienes un formulario enviado:\nSu nombre: " .$name. " \n Su e-mail: " .$email ." \n Su descripci&oacute;n: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>
[/quote]

Asi ya esta bien, espero que te funcione jejejej


Un saludo!


Título: Re: error en mandar un formulario
Publicado por: kosis157 en 1 Abril 2007, 15:57 pm
Uuf pues no me funciona ahora me tira dos errores:
PHP Notice: Undefined index: accion in C:\Inetpub\wwwroot\contactar\index.php on line 11
la linea 11:
if ($_GET["accion"]) {
PHP Notice: Undefined index: accion in C:\Inetpub\wwwroot\contactar\index.php on line 61
linea 61:
if ($_GET["accion"] == "enviar"){

weno nose si influye la version del PHP ahora tengo el PHP5
o si sabes otra menera de hacerlo que vaya bien la puedes comentar  ;)


Título: Re: error en mandar un formulario
Publicado por: Ertai en 2 Abril 2007, 15:08 pm
 :huh: :huh:

Prueba:

Código:
<?php
if(empty($_GET['accion']))
{
  // Está vacio
}
else
{
  // Esta lleno
}
?>

Y haber que sucede.


Título: Re: error en mandar un formulario
Publicado por: kosis157 en 2 Abril 2007, 17:44 pm
Sips funciona bien pero mire en la web php la función mail y es boolean y mire que si lo envia que diga correcto si no error y siemrpe me manda error, mi host es el 4444mb si alguien sabe como solucionarlo.... Os dejo aquí el código:
Código:
<?php
if(empty($_GET['accion']))
{
?>
<table width="770" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td width="159"><table width="159" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table></td>
    <td width="595">
        <table width="75%" border="1" cellpadding="0" cellspacing="0" bordercolor="#2D2D2D">
          <tr>
            <td><form action="contactar.php?accion=enviar" method="post" name="contacto">
                <table width="75%" border="0" cellpadding="0" cellspacing="0">
                  <tr>
                    <td class="table2">Tu nombre: </td>
                    <td><input name="name" type="text" id="name" class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu email:</td>
                    <td><input name="email" type="text" id="email"  class="table" /></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu asunto: </td>
                    <td><label>
                      <select name="asunto" class="table" id="asunto">
                        <option>- Seleccionar Opcio -</option>
                        <option>Sugerencia</option>
                        <option selected="selected">Colaborar</option>
                      </select>
                    </label></td>
                  </tr>
                  <tr>
                    <td class="table2">Tu comentario: </td>
                    <td><textarea name="com" rows="5" class="table" id="com"></textarea></td>
                  </tr>
                </table>
              <p align="center">
                  <input type="submit" name="Submit" value="enviar" />
              </p>
            </form></td>
          </tr>
        </table>

    </td>
  </tr>
</table>
<p>&nbsp;</p>
<?php
}else{
$email = $_POST["email"];
$name = $_POST["name"];
$com = $_POST["com"];
if($email == "" || $com== ""){
echo'Rellena los campos vacios.<a  href=javascript:history.go(-1)>Atr&aacute;s</a>';
}else{
$to = "mtp1268@ww1.edu365.com";
$subject = "Contactar";
$headers = "Content-Type: text/html; charset=ISO-8859-1 ";
$headers.= "MIME-Version: 1.0 ";
$msg="Hola tienes un formulario enviado:\nSu nombre: " .$name. " \n Su e-mail: " .$email ." \n Su descripci&oacute;n: ". $com . ".";
$enviado = mail($to,$subject,$msg,$headers);
if($enviado){
echo'mensaje enviado correctamente';
}else{
echo'Error en el envio del email.';
}
}
}
?>


Título: Re: error en mandar un formulario
Publicado por: Agente Naranja en 2 Abril 2007, 19:36 pm
Yo te recomendaría para casos así donde tengas una variable que te bote error pero el programa este bien escrito (o sea, pueda continuar con ese "error") ponle una @ antes de la linea, y así no te imprimirá el error...es un poco salvaje, pero funciona.

Y si no, leete algo de la funcion isset($variable), que te determina si la variable ha sido puesta a algun valor, usualmente sirve mejor que comprobar if($variable)


Título: Re: error en mandar un formulario
Publicado por: Ertai en 3 Abril 2007, 20:00 pm
El error del mail te lo da porque lo mas seguro es que tu hosting gratuito tiene dicha función desactivada para que no puedas enviar e-mails "anonimamente".

Consulta en Google o en las caracteristicas del hosting si eso es cierto o no, pero yo creo que si.


Título: Re: error en mandar un formulario
Publicado por: Thelord en 6 Abril 2007, 01:27 am
Desde la versión 4.2.x en adelante, los chicos de PHP.net dejaron la directiva register_globals a OFF por defecto (ver php.ini).

Edita tu php.ini .. ahi veras la directiva:
register_globals = OFF .. pasalo a ON para trabajar de la forma habitual con tus variables que envias de formularios/URL's entre otras.

thank's a Cluster.