• User

    AIUTO: problema validazione alarmJAVA con PHP

    [php]
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>** Login-Page **</title>
    </head>
    <body>
    <?
    function check($user,$password){
    include("private/utenti.php");
    foreach($utenti as $user
    => $password_){
    if (($user==$user_) AND ($password==$password_)) {
    return true;
    }
    }
    return false;
    }
    function form_login(){
    ?>
    <form id="login" action="<?=$PHP_SELF?>" method="post">
    <div style="text-align:center;margin-left:auto;margin-right:auto;">
    <font color="#FF0000"><b>NON RISULTI LOGGATO!!! </b></font> <br /> Utente:<br>
    <input type="text" name="utente" size="20" maxlength="255"><br> Password:<br>
    <input type="password" name="password" size="20" maxlength="255"><br><br>
    <input type="submit" value=" Entra ">
    </div>
    </form>
    <?
    }
    [/php]

    Buona seara a tutti, ho un problema in questa parte del codice sotto riportato:
    mi riesce a vedere e darmi l'errore ALARM solo sull'utente, mentre sulla password non mi da nessun errore, come mai??
    Grazie anticipatamente per l'aiuto...

    [php]
    if(isset($_POST["utente"])){
    if (check($_POST["utente"],$_POST["password"])){
    $_SESSION["utente"] = $_POST["utente"];
    $_SESSION["password"] = $_POST["password"];
    if($_POST["utente"] == "admin" || $_POST["utente"] == "salvatore"){include("_private/admin_panel.php");
    }
    if($_POST["utente"] == "pippo"){include("_private/pippo.php");
    }
    if($_POST["utente"] == "pepo"){include("_private/pepo.php");
    }
    }else{
    form_login();
    }
    }else{
    form_login();
    }

    if($_SESSION["utente"] != $_POST["utente"]){
    echo "<script language=javascript>
    alert('I DATI: -> UserID non sono corretti.')
    </script>";
    }
    if(isset($_POST["password"])){

    if($_SESSION["password"] != $_POST["password"]){
    echo "<script language=javascript>
    alert('I DATI: -> UserID non sono corretti.')
    </script>";
    }
    }

    ?>
    </body>
    </html>
    [/php]


  • User Attivo

    Ciao hellweb,

    Può darsi che sia la stanchezza, ma sinceramente non ho capito questo if:
    [php] if($_SESSION["password"] != $_POST["password"])[/php]

    Tu verifichi se la password registrata nella sessione è uguale a quella trasmessa tramite post, però poco più su fai:
    [php]$_SESSION["password"] = $_POST["password"];[/php]

    Quindi perché dovrebbero essere diversi e far scattare l'alert?
    Al più la variabile password registrata nella sessione potrebbe essere undefined, se il check ha dato esito false.

    Per capire qual'è il problema dovresti dirci qualcosa in più sui dati che hai utilizzato per testare lo script... (Password corretta, campo password vuoto, password errata, altro?)
    Almeno è possibile capire a quale caso fa riferimento il comportamento al quale ti riferisci.

    Ciao,
    Luca Bartoli


  • User

    Posto tutti i file dello script...

    login.php

    [php]
    <?php
    $login_admin = "_private/admin_panel.php";
    $login_pippo = "_private/pippo.php";
    $login_pepo = "_private/pepo.php";

    session_start();
    if (isset($_COOKIE[session_name()]))
    setcookie(session_name(), '', time() - 90000);

    #CODICE PER LA VISUALIZZAZIONE DELL'ID DI SESSIONE*******
    if($utente == "admin"){
    $id_utente = "Amministratore";
    header("Location: $login_admin");
    }
    elseif($utente == "salvatore"){
    $id_utente = "Sepe Salvatore";
    header("Location: $login_admin");
    }
    elseif($utente == "pippo"){
    $id_utente = "D'Esposito Pippo";
    header("Location: $login_pippo");
    }
    elseif($utente == "pepo"){
    $id_utente = "Russo Pepo";
    header("Location: $login_pepo");
    }else{
    $id_utente = "VUOTO";
    }
    #********************************************************

    #VISUALIZZA MESSAGGIO ID******************
    echo "<br>\n";
    echo "L'ID di sessione è: ";
    L'ID DI SESSIONE*******
    echo $id_utente;
    echo "<br>\n";
    #*****************************************
    ?>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>** Login-Page **</title>
    <script type="text/javascript" language="javascript" src="validation.js"></script>
    </head>
    <body onLoad="document.modulo.utente.focus();">
    <?
    function check($user,$password){
    include("private/utenti.php");
    foreach($utenti as $user
    => $password_){
    if (($user==$user_) AND ($password==$password_)) {
    return true;
    }
    }
    return false;
    }
    function form_login(){
    ?>
    <form name="modulo" method="post" onSubmit="return Controlla(this);">
    <div style="text-align:center;margin-left:auto;margin-right:auto;">
    <font color="#FF0000"><b>NON RISULTI LOGGATO!!! </b></font> <br /> Utente:<br>
    <input type="text" name="utente" size="20" maxlength="255"><br> Password:<br>
    <input type="password" name="password" size="20" maxlength="255"><br><br>
    <input type="submit" value=" Entra ">
    </div>
    </form>
    <?
    }

    if(isset($_POST["utente"])){
    if (check($_POST["utente"],$_POST["password"])){
    $_SESSION["utente"] = $_POST["utente"];
    $_SESSION["password"] = $_POST["password"];
    if($_POST["utente"] == "admin" || $_POST["utente"] == "salvatore"){include("_private/admin_panel.php");
    }
    if($_POST["utente"] == "pippo"){include("_private/pippo.php");
    }
    if($_POST["utente"] == "pepo"){include("_private/pepo.php");
    }
    }else{
    form_login();
    }
    }else{
    form_login();
    }

    if($_SESSION["utente"] != $_POST["utente"]){
    ?>
    <script type="text/javascript">
    var alertMsg = "Il form contiene uno o più errori:\n ";

    alert(alertMsg += " -> Il campo User ID o la Password non sono corretti.\n")
    </script>
    <?
    }
    ?>

    </body>
    </html>
    [/php]

    utenti.php

    [php]
    <?
    /* Per aggiungere un nuovo utente scrivere:
    $utenti["nome_utente"] = "password";
    Ad esempio, se si vuole aggiungere l'utente mario con password rossi,
    scrivere: $utenti["mario"] = "rossi";
    */
    $utenti["admin"] = "admin";
    $utenti["salvatore"] = "sepe";
    $utenti["pippo"] = "pippo";
    $utenti["pepo"] = "pepo";
    ?>
    [/php]

    validation.js

    [php]
    function Controlla(){
    var utente = document.modulo.utente.value;
    var password = document.modulo.password.value;
    var alertMsg = "Il form contiene uno o più errori:\n";
    Errore="";
    if(document.getElementById('utente').value==""){document.modulo.utente.value = ''; document.modulo.utente.focus() }
    if(document.getElementById('password').value==""){document.modulo.password.value = ''; document.modulo.password.focus() }
    if(document.getElementById('utente').value==""){Errore=alertMsg += " -> Il campo User ID è vuoto, oppure non è corretto.\n Non hai il permesso per entrare in quest'area!\n";
    document.modulo.utente.value = '';
    document.modulo.utente.focus()
    }

    if(document.getElementById('password').value==""){Errore=alertMsg += " -> Il campo Password è vuoto, oppure non è corretto.\n      Non hai il permesso per entrare in quest'area!\n";
                                               document.modulo.password.value = '';
                                               document.modulo.password.focus()
                                              }
    
    if(Errore!=""){
       alert(alertMsg); 
    return false;
    } else {
       return true;
           }
    

    }

    [/php]

    Spiego il problema:

    1° problema: il messaggio ALERT non lo lancia se il campo password è diverso da admin, sepe, pepo e pippo.

    2° problema: il messaggio ALERT lo lancia solo se il campo utente è diverso da admin, salvatore, pepo e pippo.

    Buongiorno a tutti,
    vi chiedo la cortesia di aiutarmi con il codice sopra indicato...

    Grazie anticipatamente per la collaborazione,
    saluti,


  • User Attivo

    Ciao hellweb,

    Continuo a non capire...
    Questo if [php]if($_SESSION["utente"] != $_POST["utente"])[/php] non ha poi molto senso.

    Ma non era più semplice se quando fai il check, in caso fallisse, oltre a mostrare il form di login fai partire anche l'alert?

    Una cosa così insomma:
    [php]<?
    function check($user,$password){
    include("private/utenti.php");
    foreach($utenti as $user
    => $password_){
    if (($user==$user_) AND ($password==$password_)) {
    return true;
    }
    }
    return false;
    }
    function form_login(){
    ?>
    <form name="modulo" method="post" onSubmit="return Controlla(this);">
    <div style="text-align:center;margin-left:auto;margin-right:auto;">
    <font color="#FF0000"><b>NON RISULTI LOGGATO!!! </b></font> <br /> Utente:<br>
    <input type="text" name="utente" size="20" maxlength="255"><br> Password:<br>
    <input type="password" name="password" size="20" maxlength="255"><br><br>
    <input type="submit" value=" Entra ">
    </div>
    </form>
    <?
    }

    function id_pass_alert(){
    ?>
    <script type="text/javascript">
    var alertMsg = "Il form contiene uno o più errori:\n ";
    alert(alertMsg += " -> Il campo User ID o la Password non sono corretti.\n")
    </script>
    <?
    }
    if(isset($_POST["utente"]) && isset($_POST["password"])){
    if (check($_POST["utente"],$_POST["password"])){
    $_SESSION["utente"] = $_POST["utente"];
    $_SESSION["password"] = $_POST["password"];
    if($_POST["utente"] == "admin" || $_POST["utente"] == "salvatore"){
    include("_private/admin_panel.php");
    }
    if($_POST["utente"] == "pippo"){
    include("_private/pippo.php");
    }
    if($_POST["utente"] == "pepo"){
    include("_private/pepo.php");
    }
    }else{
    form_login();
    id_pass_alert();
    }
    }else{
    form_login();
    }

    ?>[/php]


  • User

    Ciao luca,
    ha appena provato il tuo suggerimento..., purtroppo ancora con delle cose che non funzionano come vorrei.

    Mi spiego meglio, quando effettuo il Login, ed inserisco:
    1) Utente corretto, password corretta** =** mi fa accedere senza Alert (OK)

    2) Utente incorretto, password incorretta = non mi fa accedere con Alert (OK)


    3) Utente incorretto, password corretta **= **non mi fa accedere con Alert (OK)


    4) Utente corretto, password incorretta = non mi fa accedere senza Alert (ERRORE) Anche in questo caso vorrei far lanciare Alert.



    vi chiedo la cortesia di aiutarmi con il codice indicato in questa pagina...
    Grazie anticipatamente per la collaborazione,
    saluti,


  • User Attivo

    E' strano, ad occhio, se non ci sono errori, l'unico modo per non far partire l'alert mostrando però il login è che nome utente o password non siano impostati.
    Metti un
    [php]echo "Id utente o password non impostati";[/php]
    dopo l'ultimo form_login(); e prima della parentesi.

    Lancia poi lo script e guarda se viene fuori l'echo. Se si vuol dire che lo script in quel caso passa nel ramo if sbagliato.

    Facci sapere i risultati,
    saluti! 😉


  • User

    Buongiorno Luca,
    grazie veramente per l'aiuto,;)
    ho inserito dopo l'ultimo form_login(); e prima della parentesi, l'echo come da tua richiesta.
    Lanciando lo script, l'echo viene fuori inserito...:(, il ramo IF è sbagliato.
    Quindi ti chiedo, come bisogna risolvere questo problema??:?

    In attesa di un riscontro,
    ti ringrazio anticipatamente per la collaborazione,:ciauz:


  • User Attivo

    Mi viene da pensare che per qualche motivo, in caso la password sia errata, non venga passato il nome utente o la password tramite post.
    Prova a mettere un
    [php]echo "<pre>";
    print_r($_POST);
    echo "</pre>";
    [/php]
    appena prima della fine dello script (ovvero appena prima di "?>") e vedi se ci sono (vanno bene anche vuoti purché ci siano) sia il campo password sia il campo utente.

    La totale mancanza di uno di questi elementi nell'array $_POST è l'unico motivo per il quale può passare nel ramo sbagliato dell'if: a questo punto c'è da verificare perché non viene passato l'elemento.

    Se i due elementi ci sono abbiamo fatto qualche errore nello script, ma ad una prima occhiata non ne vedo.

    Scrivi qui il contenuto di quel "<pre>" una volta lanciato lo script.


  • User

    ***il contenuto del "<pre>" è il seguente:***Array()


  • User Attivo

    Stranissimo... [php]echo "Utente:[${_POST['utente'}]<br />Password:[${_POST['password']}]<br />";[/php]cosa restituisce?


  • User

    Ciao Luca,
    ho appena provato ad inserire echo che mi hai comunicato 😢, e mi restituisce::x

    Utente:[]
    Password:[]



    In attesa di altre info,
    ti ringrazio anticipatamente ;),


  • User Attivo

    Ok, il vettore $_POST è vuoto...
    Commenta tutti gli [php]header("Location: $login_xxx");[/php] e secondo me risolvi.

    Si spiegherebbe anche perché gli alert funzionano solo se l'utente è incorretto.


  • User

    Buongiorno Luca,
    grazie per l'aiuto, ma non ho capito cosa devo fare!! Mi potresti aiutare a correggere questo script per favore??

    In attesa di un riscontro,
    ti ringrazio anticipatamente per la collaborazione,


  • User Attivo

    @lucabartoli said:

    Commenta tutti gli [php]header("Location: $login_xxx");[/php]

    Prendi tutte le istruzioni [php]header("Location: $login_xxx");[/php] e aggiungigli "//" davanti.

    Così:
    [php]//header("Location: $login_xxx");[/php]


  • User

    Buongiorno Luca,:ciauz:
    grazie per l'aiuto, finalmente :D:: FUNZIONA :: quando si inserisce un utente oppure una password errata mi da ALERT. Ora però ho un altra domanda/problema:

    1. se un utente effettua il login corretto, ed esce senza fare LOGOUT, la sessione dell'utente stesso rimane aperta, quindi se rientra nella pagina login.php dovrebbe rispedirlo automaticamente nella sua pagina privata.
      Tutto questo, prima che Commentavo tutti gli Header "FUNZIONAVA":?,ora non più!!:x

    Quindi ti chiedo nuovamente di aiutarmi a correggere questo script??

    In attesa di un riscontro,
    ti ringrazio anticipatamente per la collaborazione,


  • User

    Buongiorno Luca,:ciauz:
    grazie per l'aiuto, finalmente :D:: FUNZIONA :: quando si inserisce un utente oppure una password errata mi da ALERT. Ora però ho un altra domanda/problema:

    1. se un utente effettua il login corretto, ed esce senza fare LOGOUT, la sessione dell'utente stesso rimane aperta, quindi se rientra nella pagina login.php dovrebbe rispedirlo automaticamente nella sua pagina privata.
      Tutto questo, prima che Commentavo tutti gli Header "FUNZIONAVA":?,ora non più!!:x

    Quindi ti chiedo nuovamente di aiutarmi a correggere questo script??

    In attesa di un riscontro,
    ti ringrazio anticipatamente per la collaborazione,


  • User

    Buongiorno Luca,:ciauz:
    grazie per l'aiuto, finalmente :D:: FUNZIONA :: quando si inserisce un utente oppure una password errata mi da ALERT. Ora però ho un altra domanda/problema:

    1. se un utente effettua il login corretto, ed esce senza fare LOGOUT, la sessione dell'utente stesso rimane aperta, quindi se rientra nella pagina login.php dovrebbe rispedirlo automaticamente nella sua pagina privata.
      Tutto questo, prima che Commentavo tutti gli Header "FUNZIONAVA":?,ora non più!!:x

    Quindi ti chiedo nuovamente di aiutarmi a correggere questo script??

    In attesa di un riscontro,
    ti ringrazio anticipatamente per la collaborazione,