mcpass è un codice per l'autenticazione di un utente piuttosto sicuro e estremamente semplice; è stato scritto da un programmatore francese quando le register_global erano on di default.
Io sto cercando di adattarlo a php5 con register_globalff ed ho sostituito tutte le variabili per renderle compartibili, nonostante cio mi si pianta nel punto indicato; pare non eseguire il SetCookie e da l'echo " is running. etc (vedi sotto)"
Posto il codice commentato, mi domando se a qualche espertone non salti all'occhio il problema; sono in parecchi sulla rete a cercare la soluzione !
Questo il codice da inserire in ogni pagina:
<?php
$addr=$_SERVER["HTTP_HOST"];
$selfphp=$_SERVER['PHP_SELF'];
$ok = explode(":",$_COOKIE["mcPass"]);
if(empty($ok[0])){header ("location:http://$addr/mcPass.php?go=$selfphp");}
?>
e questo è mcPass.php(da inserire nella root):
<?php
$host="localhost";
$login="root";
$pass="dbpwd";
$base="mcpass";
$lErrLog= "Nome errato"; // "Wrong Login";
$lErrPass= "Password errata"; // "Wrong Password";
$lLogin= "Nome"; // "Login";
$lPass= "Password"; // "Password";
$lValider= "Conferma"; // "Submit";
if(!$go)
{
$connect= mysql_connect($host,$login,$pass)or die(mysql_error());
mysql_select_db($base, $connect);
$result = mysql_list_tables ($base);
$i = 0;
while ($i < mysql_num_rows($result)) {
$tb_names[$i] = mysql_tablename ($result, $i);
if ($tb_names[$i]=="mcpass_tbl") $table=1;
$i++;
}
if ($table==1)
{
$install= 'Running';
}
}
// Fin qua va tutto -
function mcPassCookie ($user,$pwd)
{
// questa non la esegue ----------
SetCookie("mcPass", "$user:$pwd");
}
if(isset($submit))
{
$connect= mysql_connect($host,$login,$pass)or die(mysql_error());
mysql_select_db($base, $connect);
$query="select * from mcpass_tbl where user='$user'";
$res=mysql_query($query);
$verif=mysql_fetch_array($res);
if($pwd==$verif[pwd]&& $pwd != "")
{
mcPassCookie($user,$pwd);
?>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
document.location.replace("<? echo $go.''; ?>");
</script>
<?
}
elseif (mysql_num_rows($res)==0) $Err1=$lErrLog;
else $Err2=$lErrPass;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>mcPass</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META HTTP-EQUIV="Expires" CONTENT="Fri, Jan 01 1900 00:00:00 GMT">
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
</head>
<body bgcolor="#C0C0C0" text="black">
<p align="right"><font face="verdana" size="5" color="black">
Inserimento Password Amministratore
<?
if((!$go)&&(!$install)) echo ' - Set Up';
## questo è il mio caso--- mi si pianta qua ! :
if ((!$go)&&(isset($install)))
{
echo ' is running.var: $go FALSE ,$install TRUE, $SubInst FALSE </font></p><hr>';
echo '<p align="right">OK</p>';
echo '</body></html>';
exit();
}
?>
</font></p>
<hr>
<form action="mcPass.php" method="get">
<table align="right">
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<?
if(isset($Err1))
{
echo '<font color="red" size="2" face="verdana">'.$Err1.'! </font>';
}
echo $lLogin;
?>
: </font>
</td>
<td>
<?
if (isset($aff[0])) echo '<font color="red" size="2" face="verdana">'.$aff[0].'</font>';
else echo '<input type="text" name="user" value="'.$user.'">';
?>
</td>
</tr>
<tr>
<td align="right"><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
<?
if(isset($Err2))
{
echo '<font color="red" size="2" face="Verdana">'.$Err2.'! </font>';
}
echo $lPass;
?>
:</font>
</td>
<td>
<?
if (isset($aff[1])) echo '<font color="red" size="2" face="verdana">'.$aff[1].'</font>';
else echo '<input type="password" name="pwd">';
?>
</td>
</tr>
<tr>
<td>
</td>
<td>
<?
if((!$go)&&(!$SubInst))
{
echo '<input type="submit" name="SubInst" value="'.$lValider.'">';
echo '<input type="hidden" name="b" value="'.md5($base).'">';
}
elseif(isset($SubInst)) echo 'OK';
else
{
echo '<input type="submit" name="submit" value="'.$lValider.'">';
echo '<input type="hidden" name="go" value="'.$go.'">';
}
?>
</font>
</td>
</tr>
</table>
</form>
</body>
</html>