Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - problema nel confronto di una stringa in input con un file.txt
Forum - PHP - problema nel confronto di una stringa in input con un file.txt

Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 19:31
Martedì, 12/02/2013
pagina index.html
Codice sorgente - presumibilmente PHP

  1. <html>
  2. <body>
  3. <form action="welcome.php" method="post">
  4. Name: <input type="text" name="fname">
  5. <input type="submit">
  6. </form>
  7. </body>
  8. </html>


pagina welcome.php:
Codice sorgente - presumibilmente PHP

  1. <html>
  2. <body>
  3. <?php
  4. $var=fopen("prova_aut.txt","r");
  5. $leggi=fread($var,filesize("prova_aut.txt"));
  6.  
  7. if($leggi === $_POST["fname"]) {
  8. echo "Welcome To HomePage";
  9. }else{
  10. echo"Login incorrect...";
  11. }
  12. ?>
  13. </body>
  14. </html>



errore che viene fornito dal terminale è
Codice sorgente - presumibilmente PHP

  1. root@mycomputer:/var/www/php_/ php welcome.php
  2. <html>
  3. <body>
  4. PHP Notice:  Undefined index: fname in /var/www/php_/welcome.php on line 7
  5. Login incorrect...
  6. </body>
  7. </html>


non riesco a capire come risolverlo, e cosa significa che non ho definito fname

Ultima modifica effettuata da lorenzoscarrone il 12/02/2013 alle 19:33
PM Quote
Avatar
Qwertj (Dev Team)
Guru


Messaggi: 678
Iscritto: 30/05/2011

Segnala al moderatore
Postato alle 20:11
Martedì, 12/02/2013
se non viene passato nulla alla pagina, $_POST['fname'] non è dichiarato e PHP da un notice, che non è nemmeno un errore ma un avviso
devi modificare la direttiva error_reporting nel file php.ini, nei commenti vicino alla direttiva spiega quali valori utilizzare, solitamente E_ALL & ~E_NOTICE è una buona opzioen

PM Quote
Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 21:33
Martedì, 12/02/2013
non credo di aver capito molto bene il file php.ini è già settato come dici tu... non è che potresti postarmi una correzzione del programma? :hail:
in pratica il programma deve leggere la stringa dal post dell'index.html e mandarlo su welcome.php che lo confronta con il file prova_aut.txt se sono uguali i contenuti esegue il loging altrimenti nulla.

Ultima modifica effettuata da lorenzoscarrone il 12/02/2013 alle 21:51
PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 10:43
Mercoledì, 13/02/2013
ciao lorenzo
anche se sto imparando da poco ho capito dove hai sbagliato:
nel file html devi mettere il value per poter passare il parametro altirimenti non lo passa. cioè
Codice sorgente - presumibilmente Plain Text

  1. Name: <input type="text" name="fname" value="fname">


altra cosa.. secondo me nel file php sbagli l'approccio, perche con questa istruzione:
Codice sorgente - presumibilmente Plain Text

  1. $leggi=fread($var,filesize("prova_aut.txt"));


carichi in $leggi tutto il contenuto del file prova_aut.txt (almeno cosi provando!) perciò il tuo if non funzionerà e ti darà sempre "Login incorrect..."
non ho ancora studiato bene l'apertura di file o altro.. ma mi pare che c'è il modo di leggere un carattere alla volta. comunque indago e poi ti dico;)

niubbo8-|

Ultima modifica effettuata da Niubbo il 13/02/2013 alle 10:47
PM Quote
Avatar
Niubbo (Normal User)
Rookie


Messaggi: 55
Iscritto: 02/02/2013

Segnala al moderatore
Postato alle 11:33
Mercoledì, 13/02/2013
mi è piaciuto il tuo esempio e quindi mi son messo a farlo! (per esercitarmi pure io:D)

Codice sorgente - presumibilmente PHP

  1. <?php
  2. $fname = $_POST['fname'];
  3. $var=fopen("prova_aut.txt","r");
  4. $leggi=fread($var,filesize("prova_aut.txt"));
  5. $v = explode("\n", $leggi);
  6.  
  7. $login_ok =0;
  8. for($i=0;($i < count($v))&&($login_ok  == 0);$i++){
  9.         if(trim($v[$i]) == $fname) {
  10.                 echo "Welcome To HomePage";
  11.                 $login_ok  = 1;
  12.         }
  13. }
  14. if($login_ok == 0){
  15.   echo "Login incorrect...";
  16. }
  17. ?>


allora questo è il mio codice (ovviamente a me funziona!) tu che ne pensi?

niubbo8-|
ps. ho preso per ipotesi che nel file "prova_aut.txt" i nomi vengano messi uno per riga!

Ultima modifica effettuata da Niubbo il 13/02/2013 alle 11:36
PM Quote
Avatar
lorenzoscarrone (Normal User)
Pro


Messaggi: 92
Iscritto: 16/11/2011

Segnala al moderatore
Postato alle 19:21
Mercoledì, 13/02/2013
grazie moltissimo per l'aiuto il programma è perfetto :k:

PM Quote