PDA

View Full Version : [PHP] Confrontare riga con $_POST


skeleton
02-04-2012, 14:59
Buon giorno,
vi posto immediatamente il codice che mi da problemi:

<body>
<?php
$user = $_POST['user'];
$password = $_POST['password'];
$file = file("UTENTI.txt");
//Conto le righe del file
$rows = count(file("UTENTI.txt"));

for($i=0; $i<$rows; $i = $i+2){
//Se il nome utente è corretto e la password è corretta
if($file[$i] == $user and $file[$i+1] == $password){
setcookie('login', '$user', time() + 7200);
echo "<script language=\"JavaScript\">";
echo "alert('BENVENUTO $user!')";
echo "</script>";
$time = 0; //Tempo di attesa
$url = "index.php";
header("Refresh: $time; url=$url");
$access = 1;
$i = $rows;
}else{
$access = 0;
}
}
if($acces == 0){
echo "<script language=\"JavaScript\">";
echo "alert('NON ESISTE NESSUN UTENTE $user!')";
echo "</script>";
$time = 0; //Tempo di attesa
$url = "login.php";
header("Refresh: $time; url=$url");
}

?>
</body>

Il file UTENTI.txt
utente1
pass1
utente2
pass2

Ritengo il problema sia dato dall'if che controlla l'esattezza di $user e $password, visto che il messaggio che mi compare sempre è che non esiste alcun utente con il nome che inserisco.

Grazie in anticipo, buon pomeriggio.

skeleton
03-04-2012, 16:09
il problema è in $file..Mi prende solo l'elemento $file[ultimo_elemento], con tutti gli altri elementi dell'array genera un errore perchè sembra che proprio non esistano :eek:

Dan__88
03-04-2012, 18:16
Prova così:

$file = file("UTENTI.txt");

// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
$u = explode(';', $line);
if($u[0] == 'nome' && $u[1] == 'pass')
{
bla bla bla
}
}


File utenti:

utente1;pass1
utente2;pass2

skeleton
04-04-2012, 12:42
Prova così:

$file = file("UTENTI.txt");

// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line) {
$u = explode(';', $line);
if($u[0] == 'nome' && $u[1] == 'pass')
{
bla bla bla
}
}


File utenti:

utente1;pass1
utente2;pass2


niente non funziona. Ho provato anche ad usare, seguendo l'esempio della prima "versione" di UTENTI.txt, l'explode('\n', $file[0]). Nessuna soluzione sembra funzionare.:muro:

Dan__88
04-04-2012, 13:21
Prova ad aggiungere delle stampe per vedere cosa non va,
ad esempio dentro il foreach stampa $line, $u[0], $u[1]

skeleton
04-04-2012, 13:46
Prova ad aggiungere delle stampe per vedere cosa non va,
ad esempio dentro il foreach stampa $line, $u[0], $u[1]


<html>
<head>

</head>

<body>

<?php
$user = $_POST['user'];
$password = $_POST['password'];
$file = file("UTENTI.txt");
//Conto le righe del file
$rows = count($file);

foreach ($lines as $line_num => $line) {
echo $line;
$u = explode(';', $line);
echo $u[0];
echo $u[1];
if($u[0] == $user && $u[1] == $password){
//Se il nome utente è corretto e la password è corretta
echo "<script language=\"JavaScript\">";
echo "alert('BENVENUTO $user!')";
echo "</script>";
$i = $rows;
$access = 1;
}else{
$access = 0;
}
}
if($acces == 0){
echo "<script language=\"JavaScript\">";
echo "alert('NON ESISTE NESSUN UTENTE $user!')";
echo "</script>";
}

?>
</body>
</html>



Risultato: pagina bianca, come ti dicevo. Il problema dev'essere proprio nella funzione file() o giù di lì :muro:

Dan__88
04-04-2012, 13:52
probabilmente hai qualche errore di sintassi,
ma il tuo hosting non visualizza gli error di php.

Che hosting usi?
Non puoi provarlo in locale?

skeleton
04-04-2012, 14:00
probabilmente hai qualche errore di sintassi,
ma il tuo hosting non visualizza gli error di php.

Che hosting usi?
Non puoi provarlo in locale?

dunque, prima scrivo la mia paginetta sul notepad ++ e poi carico tutto su altervista e apro il .php

Dan__88
04-04-2012, 14:09
scusa,
devi cambiare

$file = file("UTENTI.txt");


in


$lines = file("UTENTI.txt");