PDA

Arată versiune īntreagă : Functii in crearea unui forum.



Xro1
15.01.2010, 22:28
In urmatorul material va voi prezenta functia Conectare() si alte 3 functi necesare oricarui forum!



<?
// autentificarea utilizatorului
function auth($utilizator, $parola) {
$crypt = md5($parola); // parola codificata cu MD5
//formulam o cerere - numele si parola utilizatorului:
$cerere = "SELECT IDutilizator FROM utilizatori WHERE
utilizator = '$utilizator' AND parola =
'$crypt'";
$rezultat = mysql_query($cerere) ;

if (mysql_num_rows($rezultat) == 1) {
$user = mysql_fetch_array ($rezultat) ;
$IDutilizator = $user [ ' IDutilizator' ];
// memoram ID-ul
} else {
$IDutilizator = -1; // dam ID-ului valoarea -1
}
return $IDutilizator;
// este returnat ID-ul utilizatorului
}
//verifica daca un email este valid
function checkEmail($email)
{
//definirea unei expresii regulate
$regexp = "^ [ _a-z0-9-] + (/ . [ _a-z0-9-] + )*@ [a-z0-9-]+(/. [a-z0-9-]+) * (/. [a-z] {2,4} ) $";
return (eregi$regexp, $email));
}
?>

Sau 4 functi :
Conectare () are rolul de a crea o noua conecxiune la baza de date; va retunra fie o eroare reprezetand motivul pentru care care PHP-ul nu a putut lua legatura cu MySQL-ul,fie valoare 1, in cazul reusitei.

Functia fail() are rolul de a forma un nou sir de tip URL care contine mesaju de eroare,dupa care va forta iesirea din orice program PHP.

Functia auth() va primi ca parametri un cont de utilizator si o parola si va retunra fie ID-ul utilizatorului,fie valoarea -1 in cazul in care asocierea dintre utilizator si parola este incorecta (observati faptul parametrul parola este codificat prin algortimul MD5 si este comparat cu sirul gasit in baza de date,deci in baza de date vor fi pastrate codificat toate parolele).

Ultima functie -checkEmail() are rolul de a verifica daca o adresa de e-mail este valida.Pentru asta,ne folosim de expresii regulate in stilul Perl: adresa de e-mail poate incepe doar cu caracterul "_", o litara de de la "a" la "z" sau o cifra de la 0 la 9;despartiete de punct,pot urma grupari ale acelorasi caractere,apoi este obligatoriu sa fie gasit caracterul " @" urmat de cel putin o grupare a aceluiasi set de litere si,in final,de o exetensie de doua pna la patru caractere(domeniul Internet).

Sper sa va placa si daca mai stiti o functie care ar completa pe cele care leam scris va rog punetile!

Pentru o mai buna coordonare a prezentarilor mele salvati codul de mai sus cu comun.php

Sursa Cosmin Varlan

dacian
15.01.2010, 22:36
@Xro1, felicitari pentru munca ta, dar, o functie pentru conectarea la un forum ar trebui sa verifice si daca un utilizator este banat sau nu sau daca are drept de administrare/moderare/etc ;). Plus ca eu recomand sa nu criptezi parola cum ai facut-o tu ( md5($parola) ) ci asa : md5($secret.$parola) , unde $secret e un string secret ;).
La ultima functie ai un "retunr" in loc de "return" ;)

//later, ca am vazut ca ai editat postul
De obicei se fac clase, nu functii singure ;)
Functii as putea posta aici la kilogram, dar cu ce folos.

Xro1
15.01.2010, 22:39
Eu abia acum mai invat cate ceva ,ca prea multe nu stiu dar insa incerc sa prezint materialele si poate reusesc sa le pu cap la cap in asa fel incat sa obtin rezultatul dorit!
Pentru mine e o reusita!
Multumesc frumos ca ma ai ajutat a 2 a oara!

Xro1
15.01.2010, 23:16
In urmatorul material voi prezenta sciptul ce il necesita orice forum pentru a permite utilizatorilor sa posteze!


<?
include (' comun.php') ;

// conectarea la baza de date
$con = Conectare ();
// autentificarea utilizatorului
$IDutilizator = auth ($utilizator, $parola(;
if ($IDutilizator == -1) { // autentificare esuata
fail ("Utilizator inexistent sau parola incorecta! ") ;
}

// in cazul in care autentificarea s-a efectuat cu
// succes:
$data = time () ; // se preia ora transmiterii mesajului
//cere pentru completarea listei subiectelor;
$cerere = "INSERT INTO subiecte (IDutilizator, subiect,
data) VALUES ($IDutilizator, '$subiect', $data)";
if(!mysql_query($cerere) ) { // se executa cerea
fail ("Eroare in inserarea subiectului"); // iesire
}
// impreuna cu subiectul transmitem primul mesaj:
$IDsubiect = mysql_insert_id() ;
//cerere pentru adaugarea noului mesaj:
$cerere = "INSERT INTO mesaje (IDsubiect, IDutilizator,mesaj, data) VALUES ($IDsubiect, $IDutilizator, ' $mesaj', $data) ";
if(!mysql_query ($cerere) ) { // executarea cererii
fail ("Eroare in adaugarea mesajului" ) // iesire
}
print "&rezultat=Okay"; // noul subiect a fost inserat
mysql_close($con); // deconectare