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> </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> </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> </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á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ón: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>
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!
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> </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> </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á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ón: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>
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> </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> </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á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ón: ". $com . ".";
mail($to, $subject, $msg);
echo'mensaje enviado correctamente';
}
}
}
?>
[/quote]
Asi ya esta bien, espero que te funcione jejejej
Un saludo!
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 ;)
:huh: :huh:
Prueba:
<?php
if(empty($_GET['accion']))
{
// Está vacio
}
else
{
// Esta lleno
}
?>
Y haber que sucede.
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> </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> </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á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ón: ". $com . ".";
$enviado = mail($to,$subject,$msg,$headers);
if($enviado){
echo'mensaje enviado correctamente';
}else{
echo'Error en el envio del email.';
}
}
}
?>
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)
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.
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.