Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    mcPass e register_global off - una sfida

    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>

  2. #2
    Umm..forse posta così è meglio:

    lo script si pianta perchè la $submit non è settata ma non capisco in che punto dovrebbe venir settata - mi date una mano a individuarlo che così trovo anche quale variabile non gli piace ?

    Preciso che con le register_global on va tutto perfettamente

  3. #3

  4. #4
    Gentilissimo Filippo..grazie !

    Purtroppo però non pare cambiare: questa continua a darmi $submit is not set :

    if(!isset ($_GET['submit']))
    {
    echo '$submit is not set';
    }

    Secondo te quali altre variabili devo trasformare in $_GET['variabile'] ?

  5. #5

  6. #6
    Ah, ora capisco perchè l'autore non l'ha piu sistemato....deve essere un delirio per lui, figurati per me !

    Peccato, era di immediato utilizzo e lo usavo per i siti con dati poco sensibili;

    ne cercherò uno già compatibile con le reg glob off....

    ne hai / avete qualcuno da suggerire ?

    Grazie comunque !

    ------
    un altra cosa: con error_reporting = E_ALL (php.ini) non dovrebbe segnalarmi questo tipo di errori ? non li segnala

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.