Confronto di variabili di due form

Buon pomeriggio a tutti, volevo porvi una domanda forse banale per i più esperti, ma per me è utopia. Premetto che non ha alcuna utilità questo piccolo script, serve solo a me per testare la mia capacità di  apprendimento, che però a quanto pare, dopo svariati tentativi, ho fallito alla grande.

Dunque, ho due form, un primo in una pagina html, dove si chiede all'utente di inserire un nome che poi rimanda nella seconda pagina dove c'è lo script, ma prima viene presentato un altro form dove si deve inserire un nome, una volta inviato lo script, quindi, deve confrontare le due variabili e se combaciano proseguire altrrimenti avvertire dell'incongruenza. Ho provato tante volte, ma sebbene il codice da inserire dovrebbe essere semplice, io non ho più la lucidità per capire dove sbaglio.

Tenete presente che non mi interessano i problemi legati alla sicurezza, è solo a scopo di test. Riporto il codice dell'ultima modifica, ormai esausto. Quindi non badate ad eventuali incorrettezze.

GRazie a chiunque voglia darmi una dritta..

Codice HTML
<!DOCTYPE HTML>
<html>
<head>
<title>prova</title>

</head>
<body>
<fieldset>
<legend>Registrazione utente</legend>
<center>
<form action="accesso2.php" method="POST">
<b>Inserisci un nome:</b> <br>
<input type="text" name="nome">
<p>
  <input type="submit" name="submit" value="invia">
  <input type="reset" name="reimposta">
</fieldset></center>
</form>
</body>
</html>
script php

<!DOCTYPE HTML>
<html>
<head>
<title>prova</title>
</head>
<body>
<?php
//$nome la variabile proveniente dal form iniziale
@$nome = $_POST['nome'];
?>
<center>
<form action="" method="POST">
<b>Effettua l'accesso:<br /></b>
<input type="text" name="log"></center>
<center><input type="submit" name="submit" value="accedi"></p>
</form></center>
<?php
if (@accedi){ //controllo se è stato inviato il form
if ($nome==@$log){ //confronto le due variabili
    echo "accesso effettuato...";
    }else{
        echo "I dati inseriti non sono corretti...";
    }
    }
   
?>
</body>
</html>
inviato 4 anni fa
Franck
X 0 X

A parte qualche distrazione nella scrittura del codice (@accedi al posto di @$accedi) c'è un errore di principio. Tutte le variabili PHP, ad eccezione di quelle di sessione e di quelle presenti nei cookie, hanno vita davvero breve: esistono fino alla fine dell'esecuzione dello script.

Terminata l'esecuzione dello script è come se non fossero mai esistite. Nel tuo caso l'invio del secondo form determina una seconda esecuzione dello script durante la quale non c'è memoria delle variabili presenti nella prima esecuzione, comprese quelle inviate dal primo form.

Tutto ciò è legato al modello di esecuzione di uno script PHP: il browser chiede una pagina, il server individua lo script da eseguire, lo esegue, ne preleva l'output prodotto e lo invia al browser. Al termine di questa interazione browser-server lo script PHP eseguito è come se non fosse mai stato lanciato.

Ci sono diverse strategie per gestire ottenere comunque la persistenza delle variabili e sono descritti in questo articolo:

http://www.phpnews.it/articoli/il-passaggio-delle-variabili-e-la-gestione-dello-stato/

risposto 4 anni fa
Gianni Tomasicchio
Grazie per la risposta. Si infatti, come ho detto nel post, era l'ennesima modifica, e alla fine non c'ho capito più nulla e ho commesso l'errore. Avevo pure provato con lessessioni, ma alal fine mi sono inpantanato. Grazie ancora, vado a leggermi l'articolo.Franck 4 anni fa
X 0 X

Dopo una giornata a sbatterci la testa, finalmente sono riuscito a risolvere il mio problema. 

Ho provato e riprovato con le sessioni ma con esito negatico, evidentemente non c'ho capito na beata..... Alla fine ho messo un banale campo hidden 

<input type="hidden" name="nome" value="<?php echo $_POST['nome']";?> />

e ora riesco a fare il confronto senza perdere la variabile proveninete dal primo form.

Grazie ancora.

risposto 4 anni fa
Franck
modificato 4 anni fa
X 0 X X
Effettua l'accesso o registrati per rispondere a questa domanda