salve,
sto preparando un'area riservata per il mio sito.
ho trovato un tutorial perfettamente funzionante che utilizza una integrazione tra falsh+php+mysql
questo è il codice php richiamato dal form per salvare i dati su database:
Codice PHP:
<?php
//--------------------MYSQL DETAILS ---------------------------------------//
//mysql details
require_once("dbDetails.php");
//------------------GATHER FORM DETAILS ---------------------------------//
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$age = $_POST['age'];
$email = $_POST['email'];
$randomPassword = generatePassword();
// random password generator courtesy of [url]http://www.totallyphp.co.uk/code/create_a_random_password.htm[/url]
function generatePassword() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 10) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
//----first check the email addres does not exist already
$SQL = "SELECT * FROM members_tbl WHERE email ='".$email."'";
$rs = mysql_query($SQL,$conn);
$numRows = mysql_num_rows($rs);
if($numRows > 0){
echo '&result=emailExists&';
exit();//abort php script
}
//--------insert into database------------------------------//
$insertSQL = "INSERT INTO members_tbl(first_name, surname, age, email, password) VALUES ('$firstname', '$surname', '$age', '$email', '$randomPassword')";
$rs = mysql_query($insertSQL,$conn);
if($rs){
//send user email with password
sendEmail();
echo '&result=success&';
}else{
echo '&result=failure&';
}
//------------------- EMAIL FUNCTIONALITY--------------------------//
//this will send the user his password and in effect this will make sure he has given a valid email address
//the following will be where the user will reply to if need be
function sendEmail(){
$yourname = 'NOME'; //PUT YOUR NAME HERE
$youremail = 'MAIL@mail.it';//PUT YOUR EMAIL ADDRESS HERE
//to user
$headers = "From: $yourname <$youremail>\n";
$headers .= "Reply-To: $yourname <$youremail>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1";
//the message body
$message = "Spett.le ".$GLOBALS['firstname'].",
XXXX vi ringrazia per la registrazione. LA VOSTRA PASSWORD E': ".$GLOBALS['randomPassword']."</p>";
mail($GLOBALS['email'], "Ecco i tuoi dettagli di registrazione: ", $message, $headers);
} ?>
mentre questo è il codice richiamato dal form di login:
Codice PHP:
<?php
session_start();
$email = $_POST['email'];
$password = $_POST['password'];
//mysqldetails
require_once("dbDetails.php");
$SQL = "SELECT * FROM members_tbl WHERE email ='".$email."' AND password = '".$password."'";
$rs = mysql_query($SQL,$conn);
$numRows = mysql_num_rows($rs);
if($numRows > 0){
$_SESSION['loggedIn'] = true;
echo 'login=success';
}else{
echo 'login=failure';
}
?>
e fin qui tutto ok. funziona.
ma dopo aver letto la guida sulla sicurezza in PHP di HTML.IT
sono diventato molto sospettoso.
premetto che sono alle prime armi col php, ma è chiaro
che questo codice potrebbe essere facilmente vulnerabile
poichè le password vengono salvate in chiaro sul database,
e vorrei capire come aggiungere la funzione md5 per salvare la firma della password sul database.
se prendo in considerazione questa parte di codice:
Codice PHP:
//------------------GATHER FORM DETAILS ---------------------------------//
$firstname = $_POST['firstname'];
$surname = $_POST['surname'];
$age = $_POST['age'];
$email = $_POST['email'];
$randomPassword = generatePassword();
sulla variabile password creata dalla funzione generatePassword(); manca la voce $_POST
ora, come e dove posso aggiungere la funzione md5 per creare la firma della password?