|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
[PHP] password da txt
salve raga, ho un problema con la verifica della username e password da txt
ho un filepw.txt così composto ut1 ut2 ....e cosi via e il seguente codice php ma non riesco a capire perchè non mi reinderizza alla pagina in header dopo aver effettuato login da altra pagina. il file me lo legge correttamente ma nella if non mi segue le istruzioni volute Codice PHP:
Ultima modifica di trinakrius : 01-02-2012 alle 16:51. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Codice:
if($username == $params["nome"]; && $password == $params["cognome"];) Ma l'interprete php non ti dava un messaggio di errore? ps: la funzione split è deprecata, potresti usare explode
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2011
Messaggi: 246
|
Le chiamate che modificano gli header della richiesta HTTP (header() è una di queste ovviamente) devono essere invocate PRIMA DI QUALUNQUE OUTPUT quindi devi togliere ogni echo o qualsiasi cosa che produca un output html...
P.S. Ovviamente vale anche quello che ha detto l'utente prima di me!
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto. CONCLUSO POSITIVAMENTE CON: oldfield |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Già, comunque quella riga la dovrà togliere.
Piuttosto non capisco perchè, pur con la riga di output, lo script gira. Infatti quando l'ho visto, la prima cosa che m'è venuta in mente è stata proprio quell'output prima dell'header. Eppure lo script esegue correttamente il redirect (togliendo i punto e virgola) anche con l'output...
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
grazie mille, non sapevo della caratteristica dell'header...ottimo
i ; erano li per distrazione adesso va! ma se uso la explode al posto di split(non ho ancora capito bene perchè non dovrebbe andare) come faccio a dargli il carattere separatore? grazie ancora raga, sto imparando un sacco di cose grazie al forum |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
anzi....va solo con la user e pass della prima riga del file txt.... gli altri non li prende.... help!
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
explode funziona come split
Codice:
list($nome, $cognome, $email) = explode(":", $value);
Comunque a me lo script gira anche con login dalla seconda riga in poi. Tuttavia, il redirect con l'header può darti problemi con quell'echo: Codice:
else echo "login errato"; Non è nemmeno concettualmente giusto metterlo lì quell'echo. Andrebbe fuori dal ciclo while, alla fine, in quanto il login fallisce solo se i dati non corrispondono con nessuna delle righe (quindi devi prima leggerle tutte).
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
perfetto, togliendo l'echo prende anche le altre pass...ma come posso impostare il msg 'errore' fuori dalla if e while?
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Quote:
Se vuoi fare qualcosa di più carino puoi anche usare una messagebox javascript: Codice:
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
//lettura file
$percorso = file("filepw.txt");
while(list(,$value) = each($percorso)){
list($nome, $cognome, $email) = explode(":", $value);
$params["nome"] = trim($nome);
$params["cognome"] = trim($cognome);
$params["email"] = trim($email);
if($username == $params["nome"] && $password == $params["cognome"]){
$_SESSION['username'] = '$username';
$_SESSION['password'] = '$password';
header("location: utente1.php?msg=$msg"); exit ();
}
}
?>
<script type="text/javascript">
window.alert("Login fallito!!!");
</script>
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
|
#10 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
<script type="text/javascript">
window.alert("Login fallito!!!"); </script> carino...mi piace!!! e per reindirizzare dopo il messaggio?
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Quote:
Codice:
<meta http-equiv="refresh" content="0;url=http://pagina_da_caricare">
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
|
#12 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
yes!!!
|
|
|
|
|
|
#13 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
il problema però è che mettendo tutto fuori dalla if, me lo esegue comunque
Codice PHP:
|
|
|
|
|
|
#14 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
potrei impostare un flag di controllo prima del while con una variabile che verifichi poi nella seconda if se esiste $_SESSION tramite if e un else alla fine... che dite
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Cos'è che esegue ugualmente? se il login è valido parte l'header e l'istruzione exit() blocca l'esecuzione dello script.
Se il login è errato, allora visualizza il popup e poi reindirizza. Il popup vien fuori solo se password e username non corrispondono a nessuna riga. A me funziona perfettamente, ma su che server stai facendo girare lo script? edit: il meta http andrebbe dopo lo script javascript
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight Ultima modifica di demos88 : 01-02-2012 alle 22:04. |
|
|
|
|
|
#16 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
il meta http andrebbe dopo lo script javascript
era questo che crashava...mi eseguiva comunque lo script java... utile scriptino java..grazie ancora |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Quote:
un paio di consigli comunque: spero che questo codice sia a scopo "didattico" giusto per fare un po' di pratica perchè: - usare un file per memorizzare dei dati del genere è poco conveniente oltre che poco sicuro. Nel tuo caso addirittura sono dati in chiaro non crittati. Ti consiglio vivamente di usare un database e crittare le password con l'algoritmo md5 (c'è la funzione apposita del php), rubare i dati di login contenuti in quel file è fin troppo facile, soprattutto se il file è accessibile con diritti globali. - la pagina che tu chiami utente1.php suppongo sia un pannello di controllo utente. Crea una pagina php unica per tutti gli utenti, pagina che verrà caricata dinamicamente in base all'utente presente nelle variabili di sessione. Magari stavi già facendo così, ma quell' "1" mi è sospetto. Buona programmazione
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
|
#18 | |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
Quote:
ti spiego: quell'uno c'è perche in partenza avevo un'altra idea, ma grazie a voi sono riuscito a creare una pagina dinamica e non mi serve più differenziare in base al cliente. Riprendo dopo tanto tempo con la programmazione e devo presentare un progetto in tempi brevi. Il problema della creazione del db è che devo farmi una cutura da zero.... il concetto era(dato che il sito non conterrà dati rilevanti) di creare il sito nel migliore dei mezzi in mia conoscenza per poi ottimizzarlo con l'accesso tramite db.... se vuoi puoi battezzarmi? premetto che ricordo parecchio bene il linguaggio sql...ma dando un'occhiata veloce devo usare un tool tipo phpmyadmin....no? |
|
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Ho dato per scontato che conoscessi già qualcosa di database, ma a questo punto meglio che continui a usare il file a sto punto se devi presentare il progetto.
Magari però potresti comunque crittare almeno la password. http://php.net/manual/en/function.md5.php Al posto di memorizzare la password in chiaro nel file txt, memorizzi l'md5 della password. L'md5 è una crittografazione di hash a senso unico, in pratica da una qualsiasi sequenza di caratteri (o bytes), ricava univocamente un valore a 128bit dal quale è teoricamente impossibile ricavare il valore originale. L'uso nella gestione delle password è semplice: al posto di memorizzare una password in chiaro, ne memorizzi l'md5. Quando poi l'utente fa il login, tu calcoli l'md5 della password che ti fornisce e lo confronti con gli md5 che hai memorizzato. In altre parole usi l'md5 come discriminante per il login, e l'utente deve fornirti la password che genera quell'md5. Questo metodo è già molto più sicuro perchè anche se un malintenzionato venisse in possesso di quel file txt che lasci nel server, vedrebbe solo l'md5 delle password e non potrebbe farci niente, se non tentare di capire la password vera calcolando l'md5 di tutte le possibili stringhe utilizzabili come password che sono decisamente tante (brute force).
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#20 |
|
Member
Iscritto dal: Dec 2011
Messaggi: 38
|
ok grazie del consiglio...lo inserisco di sicuro!
quanto prima imparerò la gestione db su php |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:46.




















