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

    As + php + mysql = password

    Salve ho un problemone che mi affligge da una settimana e da cui non riesco ad uscirne! Le ho provate tutte ho seguito le varie "pillole" ma non conoscendo bene l'as e soprattutto php
    non riesco a finire il mio Lavoro e il mio capo comincia ad odiarmi .

    Io ho delle pagine in php contenenti un menu fatto in flash nel quale c'è un campo apposito per inserire la password ed accedere ad una pagina protetta. Questo campo è formato da sei box nei quali verranno inseriti i sei numeri della password. Se la password è corretta mi viene aperta la pagina "protetta"
    altrimenti un'altra pagina che mi dice che la password è sbagliata.
    Il codice as è questo:

    on (release) {
    secret = new LoadVars();
    secret.onLoad = function(success) {
    if (success) {
    secret.passwd = input.box1.text + input.box2.text + input.box3.text + input.box4.text + input.box5.text + input.box6.text;
    } else {
    trace("Error loading php page");
    }
    };
    secret.sendAndLoad("http://localhost/pass.php", secret, "POST");
    }



    Box1, box2 ... sono i nomi delle istanze dei box dove verranno inseriti i numeri per la password.
    Passwd è la variabile che viene passata a php.
    Il codice php(pass.php) è questo:

    <?php
    session_start();
    $host = 'localhost';
    $user = 'root';
    $pass = '';
    $db = 'flash';
    mysql_connect($host,$user,$pass) or die;
    mysql_select_db($db);
    $res = mysql_query("SELECT pass FROM text WHERE pass='{$_POST['passwd']}'");
    $valid = mysql_num_rows($res);
    if ($valid == 1) {$_SESSION['password'] = 'true'; header("Location: /pagina_protetta.php");}
    else {
    echo("Location= /pagina_errore.php");
    }
    ?>


    Pass è il campo della tabella text.
    Vi sarei molto grato se mi poteste aiutare!!
    Grazie

  2. #2
    Utente di HTML.it L'avatar di nep036
    Registrato dal
    Nov 2003
    Messaggi
    1,453
    on (release) {
    secret = new LoadVars();
    secret.onLoad = function(success) {
    if (success) {
    secret.passwd = input.box1.text + input.box2.text + input.box3.text + input.box4.text + input.box5.text + input.box6.text;
    } else {
    trace("Error loading php page");
    }
    };
    secret.sendAndLoad("http://localhost/pass.php", secret, "POST");
    }

    sposta come da modifica...cosi:

    on (release) {
    secret = new LoadVars();
    secret.passwd = input.box1.text + input.box2.text + input.box3.text + input.box4.text + input.box5.text + input.box6.text;
    secret.onLoad = function(success) {
    if (success) {
    trace("ok");
    } else {
    trace("Error loading php page");
    }
    };
    secret.sendAndLoad("http://localhost/pass.php", secret, "POST");
    }

  3. #3
    Grazie mille. Per quanto riguarda il codice php mi puoi aiutare sempre tu o è meglio che mi rivolga al forum di php?
    Ciao

  4. #4
    Non sono riuscito a risolvere ... qualcuno mi può dare una mano?

    Grazie

  5. #5
    Codice PHP:
    <?php
    session_start
    (); // OK
    $host 'localhost'// OK
    $user 'root'// OK
    $pass ''// OK
    $db 'flash'// OK

    mysql_connect($host,$user,$pass) or die; // or die()

    mysql_select_db($db); // OK

    $res mysql_query("SELECT pass FROM text WHERE pass='{$_POST['passwd']}'"); // sbagliato, soggetto a sql injections nonche' a notice
    //il campo va controllato prima di passare la stringa al db

    $valid mysql_num_rows($res); // OK, superfluo
    if ($valid == 1) {
    $_SESSION['password'] = 'true'// pericoloso in server virtuali

    header("Location: /pagina_protetta.php"); // sbagliato, stai interagendo con sendAndLoad
    // non verrai mai reindirizzato a questa pagina
    }
    else {
    echo(
    "Location= /pagina_errore.php"); // sbagliato, echo non reindirizza da nessuna parte
    // stampa questo ( "Location= /pagina_errore.php" ) e basta
    }
    ?>


    Io farei (si fa per dire) cosi'
    Codice PHP:
    <?php
    // PARAMETRI CONNESSIONE
    $host 'localhost';
    $user 'root';
    $pass '';
    $db 'flash';

    // APPLICATIVO
    session_start(); // avvio sessione

    mysql_connect($host,$user,$pass) or die('&error=connection failure'); // in caso di insuccesso
    // comunico a flash che non mi sono connesso

    mysql_select_db($db) or die('&error=connection failure'); // in caso di insuccesso
    // comunico a flash che non mi sono connesso al database

    // FILTRO LA RICHEISTA SE PRESENTE
    $_POST['passwd'] = isset($_POST['passwd']) ? mysql_escape_string(trim($_POST['passwd'])) : false;

    if(
    $_POST['passwd'] !== false) {
        
    $query mysql_query('SELECT pass FROM text WHERE pass="'.$_POST['passwd'].'"') or die('&error=bad query');
        
    // in caso di insuccesso dico a flash che la query non e' stata effettuata

        
    if (mysql_num_rows($query) == 1) {
            die(
    '&error=no'); // nessun errore, utente loggato
            
    $_SESSION['password'] = true;
        }
        else
            die(
    '&error=access denied'); // login sbagliato
    }
    die(
    '&error=caxxo fai ???');
    ?>


    AS 1.0
    codice:
    on (release) {
    	secret = new LoadVars();
    	secret.passwd = input.box1.text + 
    			input.box2.text + 
    			input.box3.text + 
    			input.box4.text + 
    			input.box5.text + 
    			input.box6.text;
    	secret.onLoad = function(s) {
    		if(s && this.error == 'no')
    			trace("Utente loggato con successo");
    		else if(s && this.error != 'no')
    			trace(this.error);
    		else
    			trace("Impossibile trovare la pagina .php");
    	};
    	secret.sendAndLoad("http://localhost/pass.php", secret, "POST");
    }
    Ma e' un login poco affidabie, dovresti aggiungere un preg_match per la password ed hashare in Flash con MD5 o SHA1 la password ( fatta da 6 campi ... non capisco perche' ) prima di inviarla a php.

    In ultimo, non puoi basare accessi su un true di sessione, dovresti controllare i dati di volta in volta, meglio se metti tutto su cookie per evitare problemi coi servers virtuali.

    Oltre questo, le pagine "protette" devi reindirizzarle poi da flash, tipo che nell' onload

    if(s && this.error == 'no')
    getURL('pagina_protetta.php', '_self');


    dove in pagina_protetta.php devi almeno contrllare la sessione, che deve essere === true
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Grazie mille, tutto funziona perfettamente... ho cambiato qualcosa e ho aggiunto il seguente codice alla pagina protetta:

    <?php
    session_start();
    if(!isset($_SESSION['allowed']) || $_SESSION['allowed'] !== true)
    die('Acesso non consentito');
    ?>


    Ora io per accedere devo inserire una password e se corretta accedo. Dopodichè una volta navigato il sito se volessi ritornare alla pagina protetta basta che io clicchi sul pulsante apposito che mi porta all'area protetta senza dover reinserire la password. Se prima si è effettuato il login si può accedere a questarea anche attraverso questo pulsante altrimenti mi viene aperta una pagina con scritto appunto "accesso non consentito".
    Ora io vorrei che cliccando sul quel pulsante fosse fatto un controllo (lo stesso presente nella pagina protetta) e se non si è effettuato il login mi si apre un movie clip che mi dice che l'Accesso non è consentito e non la finestra come impostato dallo script sopra.

    Spero di essere stato chiaro. Grazie a chi mi aiuterà

    Ciao


  7. #7

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 © 2025 vBulletin Solutions, Inc. All rights reserved.