Newsgroup: it.comp.www.php
Titolo: autenticazione

 
          Ciao
questo script che ho scritto mi da sempre login fallito
...purtroppo sono pochi giorni che studio php e cosi'...commetto molti
errori
il senso era questo
all'accesso parte un ciclo e se la condizione if fallisce imposta un flag
che apre la finestra di utenticazione.
ma forse c'e' qualcosa di errato nella logica dello script ed io non riesco
a vedere quest'errore
<?php
/$nomi=array('franco::123456','antonio::789456');
for($i=0;$i<count($nomi);$i++)
    {
    $var=explode("::",$nomi[$i]);
 
$user=$var[0];
$pass=$var[1];
if(!isset($_SERVER['PHP_AUTH_USER'])
 OR (empty($_SERVER['PHP_AUTH_PW']))
 OR ($_SERVER['PHP_AUTH_USER'] !=$user)
OR ($_SERVER['PHP_AUTH_PW'] !=$pass))
{
$flag="no";
}else{
$flag="si";
}
 
}
if(flag="no"){
header("WWW-Authenticate: Basic realm=\" login capo\" ");
header("HTTP/1.0 401 Unauthorized");
echo"login errato";
}else{
echo"login ok";
}
?>
grazie
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Inviato via 
http://arianna.libero.it/usenet/
non ho letto tutto ma..
if(flag="no"){
va sostituito con 
if(flag=="no"){
-- 
www.iuz-lab.info

 Inviato via 
http://arianna.libero.it/usenet/
non ho letto tutto ma..
if(flag="no"){
va sostituito con 
if($flag=="no"){
-- 
www.iuz-lab.info

iuz wrote:

no comunque ci sono diversi errori..
-- 
www.iuz-lab.info

 Inviato via 
http://arianna.libero.it/usenet/
se è da poco che studi PHP magari inizia a cercare di capire come funziona
un codice come questo..
<?
error_reporting(E_ALL);
session_start();
$nomi = array('franco::123456','antonio::789456');
if(isset($_GET['logout']) AND $_GET['logout'] == 'now')
        $_SESSION['log'] = 'out';
if(isset($_POST['user']) AND isset($_POST['pass'])){
        $_SESSION['log'] = 'out';
        while(list(, $curr) = each($nomi)){
                $curr = explode('::', $curr);
                if($curr[0] == $_POST['user'] AND $curr[1] == $_POST['pass']){
                        $_SESSION['log'] = 'in';
                        break;
                }
        }
}
if(isset($_SESSION['log']) AND $_SESSION['log'] != 'in'){
echo <<< EOF
<form action='{$_SERVER['PHP_SELF']}' method='post'>
User <input type='text' name='user'><br />
Pass <input type='text' name='pass'><br />
<input type='submit'>
EOF;
die();
}
echo <<< EOF
LOGIN CORRETTO<br />
<a href='{$_SERVER['PHP_SELF']}?logout=now'>logout</a>
EOF;
?>
-- 
www.iuz-lab.info

 se č da poco che studi PHP magari inizia a cercare di capire come funziona


 
scusa non mi ero accorto..
ma bastava sostituire la linea 22 con..
if(!isset($_SESSION['log']) OR $_SESSION['log'] != 'in'){
-- 
www.iuz-lab.info

attenzione alla sicurezza...se un navigatore smaliziato dicesse:"ok...quella
pass senza asterischi non mi convince...guardio un po' il codice php della
pagina...: e li troverebbe login e pass! okkio!
giorgione


giorgione wrote:

le password in chiaro non somo mai sicure ma basta usare MD5 o meglio
crypt..
e comunque in condizioni ottimali il navigatore non è in grado di leggere il
codice PHP (rendendo lo script 'sicuro').. se lo è.. beh non è di certo una
bella cosa dal punto di vista della sicurezza..
-- 
www.iuz-lab.info