error en mandar un formulario

Iniciado por kosis157, 31 Marzo 2007, 20:32 PM

0 Miembros y 1 Visitante están viendo este tema.

kosis157

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  ;)

<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';
}
}
}
?>


Luisango

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:

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:

<?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!
Even better...

kosis157

#2
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:

<?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';
}
}
}
?>

Luisango

mira, ya se por que es, siento no darme cuenta antes, mira:
<?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!
Even better...

kosis157

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  ;)

Ertai

 :huh: :huh:

Prueba:


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



Y haber que sucede.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

kosis157

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:

<?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.';
}
}
}
?>

Agente Naranja

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)

Ertai

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.
Si la felicidad se comprara, entonces el dinero sería noble.


void rotar_by_ref(int& a, int& b) {
   /* Quien dijo que no se podia sin una variable temporal? */
   *a = *a ^ *b;
   *b = *a ^ *b;
   *a = *a ^ *b;
}

Thelord

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.