PDA

View Full Version : [PHP login] la prima volta che lo faccio, cripto le psw? HELP


TorpedoBlu
17-03-2006, 10:29
ciao ragazzi, devo fare il plassico pannello di login, sono alle prime armi e vorrei avere consigli, naviganso su free php ho trovato questo codice:

pagina1


<?php
session_start();
dbconnect();
$_POST['nick'] = stripslashes($_POST['nick']);
$_POST['nick'] = mysql_escape_string($_POST['nick']);
$_POST['psw'] = stripslashes($_POST['psw']);
$_POST['psw'] = mysql_escape_string($_POST['psw']);
$_POST['nick'] = mysql_real_escape_string($_POST['nick'])
;
$_POST['psw'] = mysql_real_escape_string($_POST['psw']);

function str_crypt($data, $key)
{
if(strlen($key)<32) $key = md5($key);
$ld = strlen($data);
$lk = strlen($key);
for($i=0, $crdata=""; $i<$ld; $i++){
$crdata .= sprintf("%02X",(ord($data[$i]))^(ord($key[$i%$lk])));
}
return $crdata;
}
$_POST['psw'] = str_crypt($_POST['psw'], parola_scelta_da_te);
if (!isset($verified_user)) $verified_user='';
if ($action=='login') {
//la tabella nn la kiamaresolo login,ma aggiungici altre lettere vicino come io ho fatto mettendo zzq,così diventa impossibile per gli hacker indovinare il nome
$result=mysql_query("SELECT *_ FROM loginzzq WHERE Nick='$_POST[nick]' AND Pass='$_POST[psw]'");
if (mysql_num_rows($result)==1) list($verified_user)=mysql_fetch_row($re
sult);
else $verified_user='';
}
session_register("verified_user");
setcookie("user_id", $nick, 0, $cookie_path, $cookie_host);

$banned = file('banned.txt');
if (!in_array($ip, $banned)) {
if ($verified_user != '') {

include('login2.php');
} elseif ($action == "login" && $verified_user == '') {
include('errore_login.php');
} } else { echo"SEI STATO BANNATO!!"; }

function dbconnect() {
mysql_connect("localhost", "manuel", "password");
@mysql_select_db("nomedatabase_com") or die ("Unable to select database");
}




pagina2

<?php
$db = mysql_connect("localhost", "manuel", "pass"); if ($db == FALSE) die ("Errore nella connessione. Verificare i parametri nel file config.inc.php");
mysql_select_db("nomedatabase_com", $db) or die ("Errore nella selezione del database. Verificare i parametri nel file config.inc.php");
$query = "SELECT *,UNIX_TIMESTAMP(Data) AS Data FROM loginzzq WHERE Nick='$nick'"; $result = mysql_query($query, $db);
$row = mysql_fetch_array($result);


if($row['Nick'] != '') {
if(Time() <= $row['Data'])
{ include('espulso.php'); }
else
{ include('home.php'); }
} else { echo"<center><b>Inserisci nick e password</b></center>"; }
?>

non ci capisco molto, mi dite se è giusto???

cionci
17-03-2006, 11:18
Prova a farlo da solo, mgari viene più semplcie... Il crypt della password lascialo fare al database con le opportune funzioni (guarda PASSWORD su mysql)...

TorpedoBlu
17-03-2006, 11:32
Prova a farlo da solo, mgari viene più semplcie... Il crypt della password lascialo fare al database con le opportune funzioni (guarda PASSWORD su mysql)...

al database? in che senso?come si gestiscono le sessioni? io ho una tabella utenti che ha un tipo utente (4 tipi di utenti possibili)
devo poter registrare loggare e sloggare gli utenti e quando sono loggati mantenere alcune info su di loro.

cionci
17-03-2006, 11:43
Le sessioni le gestisci tramite php...non ha niente a che fare il database...
La tabella utenti ti serve solo come riferimento per confrontare la password inserita da form... Tutto il resto delle info le gestisci tramite la sessione php...

TorpedoBlu
18-03-2006, 07:59
ok, funziona, ora qualcuno mi sa dire come si fa a :
1)nascondere le password durante la digitazione
2)far spuntare i giorni i mesi gli anni durante la compilazione di una form di registrazione
3)far spuntare le città e le province nella form di cui sopra

cionci
20-03-2006, 11:39
ok, funziona, ora qualcuno mi sa dire come si fa a :
1)nascondere le password durante la digitazione
<input type="password"

2)far spuntare i giorni i mesi gli anni durante la compilazione di una form di registrazione
In che senso ?

3)far spuntare le città e le province nella form di cui sopra
Non so dove poterla reperire, mi dispiace...