[PHP] Traspaso de variables entre páginas

TeKaNeO

Hola a todos:

Tengo un pequeño problema que posiblemente sea otra simplicidad dentro del mundo del php pero que no se como hacer, o al menos, no me sale de la forma que lo intento hacer.

El caso está en el formulario de relleno de registro de un usuario en la BD. La persona rellena sus datos y tal, pero al llegar al apartado típico de : "Inserte password", "Reinserte mismo password para verificación", y ambos deben ser iguales pero ¡vaya! se equivoca y vuelta a cargar la web xD. El caso es que no quiero que tenga que reescribir todos los apartados, solo los que yo desee, no se si me explico. Guardar las cajas que yo quiera (nombre, apellidos, edad... ) en variables y que al recargar la web se coloquen esos ya y solo tenga que reescribir el pass y la copia del mismo.

El caso es que yo tengo 2 zonas de registro: una registro.php que es donde mete los datos, (el típico de formulario) y la otra verificaregistro.php que es donde llegan los datos mediante POST al pulsar en registrar. Entonces mi idea es, que los datos que ya obtengo en la web de verificaregistro.php que se guardan en variables, sean enviados al fallar el registro a la primera web, registro.php, y sustituyan las cajas con las variables que le envie solo, y rellene el resto.

Posiblemente sea algo facil, el caso es que he probado con mil historias, java incluido pero lo que me hce es que al enviar a la primera web los datos, me los envia en forma de URL, algo asi http://localhost/registro.php?nombre=&nombre$edad=&edad....

¿Hay alguna manera facil y amena de que esos datos lleguen a la web que yo quiero y sustituyan las cajas iindicadas segun las variables? O bien, ¿cómo recogo de nuevo esas variables que traspaso desde navegador en la URL y las coloco en las cajas?

Un saludo a todos^^

Coder

posiblemente exista una forma mas facil, pero puedes recoger todas las variables que haya enviado por post con :
EDIT: no me dja poner el codigo, si sigues con la duda enviame un PM.

B

Si lo unico que quieres es comprobar que lo que ha insertado el usuario en los campos de password y repeticion de password sean iguales, es muy sencillo.
Se trataria de hacer la comparacion de los inputs mediante javascript y si no son iguales avisas al usuario y no submitas el formulario.
Algo asi:

function comprobar() {
if (document.nombreform.nombreinput.value != document.nombreform.nombreinput.value)
    alert('Los dos campos no son iguales');
else
    document.nombreform.submit();
}

No se si es eso lo que querias, a lo mejor no lo he entendido bien jeje

TeKaNeO

No Cthulhu, no me has entendido creo :P el caso es que eso que pones si se hacerlo, el problema viene cuando ambos passwords no son iguales, entonces quiero que vuelva al php que tiene el formulario pero con los datos que ya metio el usuario como puede ser nombre,edad, apellidos... y los campos esos los rellene automaticamente salvo el de password que no devolveria porque debe volverlo a meter.

No se si has visto el típico registro de foro que hace eso, si te equivocas, te salen los campos que has rellenado de nuevo salvo el de password para que vuelvas a meterlo :P, de todos modos gracias por el trozo de código :) si tienes alguna ideilla al respecto... xD

Coder, ahora tengo que salir y volveré a eso de las 9, si te parece enviame por MP el código que me querias pasar, o dime una url o algo donde verlo, y así al llegar le echo un vistazo :) muchas gracias

Saludos^^

B

Es que, segun entiendo, no deberias salir del php que contiene el formulario si los datos del formulario no son correctos. Es decir, el usuario mete el password en ambos campos, pues antes de pasar al php siguiente ( que supongo que sera el action del formulario ) compruebas que todo este ok en el formulario, si no lo esta ya no tiene sentido submitarlo.

Nos vamos entendiendo, o no acabo de pillar lo que quieres hacer? xD

erdanblo

Haz la comprobación con Js. Y luego con PHP de cara al servidor.

Casi todo el mundo tiene Js, por uno o dos que no lo tengan activo y tengan que volver a escribir todo de nuevo, no pasa nada.

r2d2rigo

Bueno, tienes el form con POST no? Pues solo se me ocurre una solucion bastante "hacky" para lo que quieres:

formulario.php -> passwordsiguales.php
-si los passwords son iguales ve a alta.php pasando los datos por GET (hashea el password por si acaso!)
-si no, vuelve a formulario.php pasando los datos por GET tambien (no hace falta que pases el pass esta vez). Entonces en formulario.php comprueba que $_GET no esta vacio, y rellena los campos con JavaScript.

Vale, es una solucion bastante guarra, pero es lo unico que se me ocurre para lo que quieres hacer :P

scumah

Yo tampoco entiendo muy bien porque no verificas primero con js, y ya después cargas lo que tengas que cargar, siempre que la verificación salga bien... ¿Hay algún motivo para no validar primero con js?

W

Pasalas por $_SESSION

$SESSION['usuario']=$POST['user']

por ejemplo, y en la pagina de el formulario escribes esto

if(isset($_SESSION['usuario'])) {

input name='user' type='text' value=' <.?.php echo $_SESSION['usuario'] ?.>' size='50' maxlength='50'

} else {

input name='user' type='text' size='50' maxlength='50'

}

Luego en la pagina de comprobacion

if($POST['pass']==$POST['re-pass']) {

envias a bbdd
y eliminas la $_SESSION['user'] con

unset($_SESSION['user']);

} else {

echo "las pass no son iguales"
$SESSION['usuario']=$POST['user']

}

De esta forma haras que si el tio se equivoca ya esten puestos los datos, y si no se equivoca enviaras la sql y luego borras las variables para que no le salgan si vuelve a ir.

Esto es lo que entendido mas o menos que pedias, ahora que haya formas mas profesionales de hacerlas o no eso ya lo diran los MVphpMasters pero bueno XD

SiCk

No he leído el post, pero, varios fallos que veo:

  • Las comparaciones entre dos strings hacerlas con strcmp, creerme que os ahorrará posibles quebraderos de cabeza
  • Almacenar el texto del input type="password" en MD5 o SH1 a ser posible desde el HTML con JS (en google encontraréis la función).
shortyStyle

No tengo mucha idea, pero yo tiraría de variables de SESSION.

Al verificar, guardas en variables de session los datos de los usuarios que estén bien, ej:

if(isset($POST["nombre"]))
$
SESSION["nombre"]=$_POST["nombre"];

y luego al volver atás haría algo así:

< input type="text" value="<? $_SESSION["nombre"] ?>" name="nombre">

Repito, no tengo mucha idea y seguro que esto es muy chapucero, pero creo que serviría :\

scumah

#11, al guardar sólo los datos que estén bien, habrá que hacer una validación antes para ver cuales están bien. Y yo entiendo que no querrá meter js o algo, porque si no no entiendo el problema...

El caso es que si metes js y validas antes de enviar el formulario, el problema este no existe... ¿no? xDD

el tekaneo sa olvidao ya del thread...

LOc0

El caso es que yo tengo 2 zonas de registro: una registro.php que es donde mete los datos, (el típico de formulario) y la otra verificaregistro.php que es donde llegan los datos mediante POST al pulsar en registrar.

En mi antigua web yo hacía eso en el mismo fichero .PHP

Cuando cargues la página comprueba si hay datos POST:
a) Los hay, están todos y todos son válicos -> Entonces efectúas el registro en la base de datos, etc... Cuando termines mensajito de SE ha registrado correctamente y bla bla bla...

b) Hay datos, pero no están todos -> te quedas con los válidos y reescribes el formulario poniendo esos valores ya por defecto en las cajas.

c) NO hay datos POST -> formulario en blanco.

Salu2 ;)

shortyStyle

#12 Claro hombre tendrá que controlar los datos del registro, pero eso ya lo hará él en la página donde recoja los POST's. De todas formas supongo que no querrá usar js, porqué como tu dices eso lo puede validar antes de enviar los datos.

#13 Eso no lo he probado nunca, mejor, así me ahorrare unas cuantas páginas de más : >

elkaoD

Os complicáis que te cagas. Pasa lo que sea con POST al propio formulario.php, al principio del formulario pones un if que compruebe que todo está bien, y si no está bien vuelves a poner el formulario (Si venimos de una primera vez habrá saltado el formulario directamente.) Si no está bien, haces un
echo "< input type=\"text\" name=\"nombre\" value=\"" . $_POST[] . "\">";

Si está bien, pues ya haces lo que quieras con los datos del formulario.

L

Lo de #15 esta bien. Todo cargado en el form y luego con el requesto.poya xD

Peeero, yo tiraria de SESSION SIEMPRE como norma general.

.setAtribute()
.getAtribute()

mezclalo con php y ale! xD

iKi

perdón por mi intrusión en estos lares pero..

Yo también lo haría como #15.

Y esta pregunta va con todo mi ánimo por aprender no intento ofender a nadie ni tampoco ir de sobrada

#16 ¿por qué es mejor hacerlo por variables de session?

Es más, yo lo que haría sería combinar un if ($_POST) con un "location.reload()"

Usease, el JS que te comprueba que los campos de la pass son iguales, en caso de no serlo (false) te hace un location.reload, al recargar la página el código encontrará el if($_POST) en cuyo caso, tienes los valores almacenados en el array del POST y sólo has de poner los values de los campos del formulario como muy bien ha explicado #15

Y ahora pido disculpas por si he metido la pata y he dicho alguna burrada pero yo creo que esto podría ser así.

elkaoD

¿Para qué el location.reload? Al mandar el form con los valores malos, ya va al form, por lo que no necesitas un reload. Al mandarlo con los valores buenos, 3/4 de lo mismo.

A lo mejor no he entendido bien, por eso pregunto.

iKi

pq él quiere que si las pass no coinciden se le quede en el mismo archivo .php y si coinciden se vayan a otro archivo.

Por lo tanto, el action del formulario debe ir a esa otra página en caso de que las passes coincidan y sino coinciden quedarse ahí pero con los campos ya introducidos previamente no ?

Al menos es lo que he entendido yo, pero ya os digo que no sé mucho

elkaoD

#19, pero es que eso se hace también con PHP.

iKi

entonces creo que ahora soy yo la que no entiende lo que dices xD

<form name="holaquetal" action="laotrapagina.php">

aaaaaaaaaaaaaaaaaaaaaaaaaah !!!

y en "laotrapagina.php" hacer una comprobacion antes de todo el codigo y si las pases no coinciden ke te mande a la de antes ?

Sip, no lo había pensado. Otras veces he usado un Location.reload de javascript

BLZKZ

no lo podrias hacer con un bucle del tipo

hasta que los password no sean iguales vuelves a pedirlos?

Edit.

Yo es que de php no entiendo demasiado, pero en otros lenguajes en vez de guardar directamente los pasword en "document.nombreform.nombreinput.value" lo que haria seria meterlos en una varible de tipo string comparar los dos strings y si coinciden guardarlo. Utilizando el bucle. No se como se hara en php pero en otros lo haria asi...

elkaoD

#22, no, en PHP un bucle indica que la página no se carga.

Usuarios habituales