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