Google
Web dns.bdat.net

[PHP-ES] No consigo pasar las variables de un formulario a un script

Write haof XML files: CYBERNIÑO ( cyberni@cyberni.com)
Fecha: mar 01 nov 2005 - 03:42:51 CET


Buenas:

Estoy creando una tabla en la base de datos con el fin de mantener usuarios registrados, pero en el primer script, en el que añadiría los registros, me ha surgido un problema que no he sabido resolver. He mirado los manuales, como luego os comento, pero nada.

En primer lugar, tenemos el formulario:

registro.html
<html>
<body>
<p>Rellena el siguiente formulario:</p>

<form method="post" action="regad.php">
<p>usuario<br>
<input type="text" name="userid"></p>
<p>password<br>
<input type="password" name="pass"></p>
<p>e-mail suscrito<br>
<input type="text" name="smail"></p>
<p>e-mail alternativo<br>
<input type="text" name="amail"></p>
<p><input type="hidden" name="estado" value="rg"></p>
<p><input type="submit" name="enviar" value="aceptar"></p>
</form>
</body>
</html>

A continuación, el script que debería agregar el registro a la tabla. El usuario y clave de acceso a la base de datos, son supuestos aquí:

regad.php
<html>
<body>
<?php
if ($enviar) {
$conexion = mysql_connect ('localhost', 'usuario', 'clave');
mysql_select_db('mibd', $conexion);
$sql = "INSERT INTO usuarios (userid, pass, smail, amail, estado)";
$sql .= "VALUES ('$userid', '$pass', '$smail', '$amail', '$estado')";
$resultado = mysql_query($sql);
echo "¡Gracias! Hemos recibido sus datos.\n";
}
else {
echo "no se han enviado datos \n";
echo 'Volver al formulario';
}
?>
</body>
</html>

Bien, el caso es que siempre me aparece el mensaje de no se han recibido datos, y el enlace para volver al formulario.
Si cambio la condición a (!$enviar) el resultado es que me aparece el mensaje de gracias, haya en viado datos o no.
Eso me hizo pensar que la variable $enviar no se enviaba, así que, hice una prueba:
Redirigí la salida, cambiando la etiqueta <form> a action="pruebadata.php", que sería así:

pruebadata.php
<html>
<body>
<?php
echo $userid . "\n";
echo $pass . "\n";
echo $smail . "\n";
echo $amail . "\n";
echo 'volver al formulario';
?>
</body>
</html>

Nada, no imprime las variables.
Consulto el manual, y la única explicación posible, podría ser que no estuviera configurada la directiva track_vars = on en el .ini, pero, además de que en el .ini hay una nota que dice que desde la versión 4.0.3 esta directiva está siempre habilitada, probé a ponerla explícitamente, con el mismo resultado.
¿Qué hago mal? ¿qué me falta o me sobra en el script o en el formulario?

Perdón por lo extenso, y gracias de antemano por tomaros la molestia.

Saludos.

CYBERNIÑO




Este archivo fue generado por hypermail 2.1.7 : sáb 18 mar 2006 - 18:23:40 CET