Torna indietro   Hardware Upgrade Forum > Software > Programmazione

BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone
BOOX ha portato sul mercato Picco, un e-reader da 3,97 pollici che pesa 58 grammi e si aggancia al retro dello smartphone con un anello magnetico. Lo abbiamo usato con Pixel 11 Pro XL e iPhone 18 Pro per capire se un formato così ridotto regga la prova della lettura quotidiana
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria
A Las Vegas AMD ha svelato i dettagli architetturali delle CPU EPYC di sesta generazione, note con il nome in codice Venice. Nuovi core Zen 6 e Zen 6c costruiti a 2 nanometri, fino a 256 core per socket, 16 canali di memoria, interfaccia PCI Express 6.0 e un'intera famiglia di proposte che va da Venice SP7 a Verano. Senza dimenticare la memoria, oggi la voce di costo più pesante in un server: AMD risponde con CXL 3.1 e con la tecnologia software MEXT, che porta la memoria flash dentro la gerarchia della DRAM.
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro
HONOR Pad X9 Max mette un pannello IPS da 13 pollici con risoluzione 2,5K e refresh a 120 Hz davanti a una batteria da 10.100 mAh e a quattro altoparlanti. Il listino parte da 399,90 euro, per un progetto molto chiaro e ambizioso: schermo ampio, buon audio e giornate lontano dalla presa, a un prezzo che non pesa sul portafoglio
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-02-2012, 16:46   #1
trinakrius
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
ut1sw1:email1 mi fa ste faccine ma ci sono due punti :
ut2sw2:email2
....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:
<?php
session_start
();
$username = $_POST['username'];
$password = $_POST['password'];


//lettura file
$percorso = file("filepw.txt");
while(list(,
$value) = each($percorso)){
    list(
$nome, $cognome, $email) = split("[:]", $value);

    
    
$params["nome"] = trim($nome);
    
$params["cognome"] = trim($cognome);
    
$params["email"] = trim($email);
    

    
#Stampo i risultati a video per verifica, la eliminerò
    
echo $params["nome"]." - ".$params["cognome"]." - ".$params["email"]. "<br />";

if(
$username == $params["nome"]; && $password == $params["cognome"];){
    
$_SESSION['username'] = '$username';
    
$_SESSION['password'] = '$password';
    
header("location: utente1.php?msg=$msg"); exit ();
    }
else echo 
"login errato";
}

?>

Ultima modifica di trinakrius : 01-02-2012 alle 16:51.
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 18:25   #2
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Codice:
if($username == $params["nome"]; && $password == $params["cognome"];)
Togli i due punto e virgola
Ma l'interprete php non ti dava un messaggio di errore?

ps: la funzione split è deprecata, potresti usare explode
__________________
CPU Ryzen 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 19:24   #3
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 250
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, furletto, SL45i
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 19:32   #4
demos88
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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 19:44   #5
trinakrius
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
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:01   #6
trinakrius
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!
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:13   #7
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
explode funziona come split
Codice:
list($nome, $cognome, $email) = explode(":", $value);
basta leggere la documentazione.

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";
in quando sta dentro al ciclo while di lettura del file, quindi se la prima riga non corrisponde, manda un echo e ti incasina l'header.
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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:18   #8
trinakrius
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?
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:27   #9
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da trinakrius Guarda i messaggi
perfetto, togliendo l'echo prende anche le altre pass...ma come posso impostare il msg 'errore' fuori dalla if e while?
basta che metti l'echo dopo le parentesi graffe di chiusura del ciclo while no? Se nessun login corrisponde, l'header non parte e il ciclo while finisce e il tuo echo viene eseguito.

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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:42   #10
trinakrius
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?
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 20:52   #11
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da trinakrius Guarda i messaggi
<script type="text/javascript">
window.alert("Login fallito!!!");
</script>

carino...mi piace!!! e per reindirizzare dopo il messaggio?
aggiungi un meta refresh dopo quello script:
Codice:
<meta http-equiv="refresh" content="0;url=http://pagina_da_caricare">
Appena clicchi ok sul popup, viene caricata la pagina indicata nel tag, o almeno dovrebbe :P
__________________
CPU Ryzen 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 21:42   #12
trinakrius
Member
 
Iscritto dal: Dec 2011
Messaggi: 38
yes!!!
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 21:44   #13
trinakrius
Member
 
Iscritto dal: Dec 2011
Messaggi: 38
il problema però è che mettendo tutto fuori dalla if, me lo esegue comunque

Codice PHP:
<?php
session_start
();
$username = $_POST['username'];
$password = $_POST['password'];


//lettura file
$percorso = file("filepw.txt");
while(list(,
$value) = each($percorso)){
    list(
$nome, $cognome, $email) = split("[:]", $value);

    
#Usiamo trim() per eliminare eventuali spazi vuoti
    
$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 ();
    
    }
}

?> 
<meta http-equiv="refresh" content="0;url=index.php">
<script type="text/javascript">
window.alert("Login fallito!!!");
</script>
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 21:52   #14
trinakrius
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
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 22:01   #15
demos88
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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight

Ultima modifica di demos88 : 01-02-2012 alle 22:04.
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 22:46   #16
trinakrius
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
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 01-02-2012, 23:04   #17
demos88
Senior Member
 
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
Quote:
Originariamente inviato da trinakrius Guarda i messaggi
il meta http andrebbe dopo lo script javascript


era questo che crashava...mi eseguiva comunque lo script java...
utile scriptino java..grazie ancora
javascript* (abbreviato js), il java è tutta un'altra cosa, occhio a non far confusione qualcuno potrebbe trollarti

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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2012, 00:55   #18
trinakrius
Member
 
Iscritto dal: Dec 2011
Messaggi: 38
Quote:
Originariamente inviato da demos88 Guarda i messaggi
javascript* (abbreviato js), il java è tutta un'altra cosa, occhio a non far confusione qualcuno potrebbe trollarti

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
grazie mille per i consigli...
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?
trinakrius è offline   Rispondi citando il messaggio o parte di esso
Old 02-02-2012, 10:07   #19
demos88
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 5900X @ 4,7Ghz + Thermalright Phantom Spirit 120 SE / MB Asus X470-F Gaming / RAM 2x16GB DDR4 Corsair 3600 CL16 / VGA Sapphire RX 7900 XT Nitro+ / SSD Crucial T500 1TB + Samsung 970 Pro 512GB + Sandisk 960GB Ultra II / PSU FSP Hydro G PRO 1000W / Headset Kingston HyperX Flight
demos88 è offline   Rispondi citando il messaggio o parte di esso
Old 03-02-2012, 10:05   #20
trinakrius
Member
 
Iscritto dal: Dec 2011
Messaggi: 38
ok grazie del consiglio...lo inserisco di sicuro!

quanto prima imparerò la gestione db su php
trinakrius è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


BOOX Picco: l'ebook reader minuscolo è una genialata, e si può attaccare allo smartphone BOOX Picco: l'ebook reader minuscolo è un...
AMD EPYC Venice: dentro Zen 6, i SoC a 256 core e la sfida al costo della memoria AMD EPYC Venice: dentro Zen 6, i SoC a 256 core ...
HONOR Pad X9 Max recensione, schermo ultra large a meno di 400 euro HONOR Pad X9 Max recensione, schermo ultra large...
Lenovo ThinkPad X1 Carbon Gen 14: il business ultraleggero si rinnova dall’interno Lenovo ThinkPad X1 Carbon Gen 14: il business ul...
Jabra Evolve3 85: le cuffie sia per l'intrattenimento che per il lavoro Jabra Evolve3 85: le cuffie sia per l'intratteni...
Programma NOM4D: Caltech e DARPA hanno r...
La missione ESA Hera inizia l'analisi de...
SpaceX e Singulus: stretto un accordo pe...
Binance avvisa: un bug di iOS mette a ri...
Apple corregge 9 vulnerabilità su iPhone...
Microsoft inaugura il Pavilion a Roma, c...
Black Friday, l'errore che può co...
Lotus avrà un V8 ibrido da 670 CV...
IBM: solo il 26% delle imprese dimostra ...
Hacker contro hacker e danni per 740.000...
Xiaomi SkyNomad, boom da 27.147 auto in ...
Logitech concede un giorno di ferie ai s...
Amazon, questi mini PC hanno un display ...
BYD prepara una rivale di smart #2? Il b...
Amazon, 3 robot tagliaerba ECOVACS GOAT ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v