Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
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 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
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: 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
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 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
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 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
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 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
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 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
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 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.
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 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
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 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
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


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Missione Artemis II diretta verso la Lun...
Toy Story 5 arriva al cinema: è l...
Intel cambia rotta su Linux? Nuove assun...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
Pirateria audiovisiva: la Guardia di Fin...
Ubisoft conferma due nuovi Far Cry in sv...
Chi vincerà il Festival di Sanrem...
G42 e Cerebras portano in India un super...
Offerte aggiornate del weekend Amazon: 7...
4 MacBook Air in offerta e scende a 939€...
Chrome cambia il tuo modo di lavorare: o...
Minimo storico iPhone 17 su Amazon: 909€...
USA, incriminati tre ingegneri della Sil...
Xbox: Phil Spencer lascia dopo 38 anni, ...
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: 07:15.


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