Google
Web dns.bdat.net

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

Write haof XML files: Rafael ( rsalazar@innox.com.mx)
Fecha: mar 01 nov 2005 - 05:21:52 CET


        Como te dice Jaime, deberías emplear las variables superglobales $_POST
y $_GET (o $_REQUEST, que combina $_POST, $_GET y $_COOKIE, pero el uso
de las primeras deja por demás claro de dónde esperas obtener los
valores --en el caso de los valores por POST, es más seguro pues no lees
de otras fuentes "no-post")

        Como nota aparte, ¿qué sucede siyo capturo O'Reilly? (inténtalo) Para
evitarlo, utiliza la función mysql_escape_string --no solo se puede
causar que el script falle, también se puede inyectar código (SQL)
   http://www.php.net/mysql-escape-string

        Más info en
    http://www.php.net/manual/en/language.variables.external.php

CYBERNIÑO wrote:
> 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?

-- 
Atentamente,
J. Rafael Salazar Magaña
Innox - Innovación Inteligente
Tel: +52 (33) 3615 5348 ext. 205
Cel: +52 (33) 1042 8382
rsalazar@innox.com.mx
http://www.innox.com.mx
-- 
PHP Spanish Localization Talk Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


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