Jump to content

skyler_sdf

+Helpers
  • Posts

    279
  • Joined

  • Last visited

  • Days Won

    9

Everything posted by skyler_sdf

  1. nice
  2. ce se ascunde in spatele link.urilor de la poze? (looks funny?)
  3. in primul rand NU te baga in ceva ce NU ITI PLACE.. nu te baza pe auzite, ci pe vrei tu sa faci. cat despre colectivul de...... "prietenul la nevoie se cunoaste", nu la bac, nu la admitere, si nici la un job. legat de ce se face la liceu e simplu: daca ai prof, prinzi mai bine, daca ai "prof" poti sa zici ca dai skip la ora, si inveti singur...oricum daca iti place ar trebui sa lucrezi mult mai mult decat ce ti se da la scoala. TIC= ai sa inveti despre: Microsoft Word/Excel/power point/access, si cv de internet... cat despre ce ai sa inveti: C, si unele chestii din C++( am pus un topic p undeva cu diferenta dintre c/c++, dar dupa ce inveti ai sa intelegi si ce e cu asta ). ce am pus eu la sectiunea C/C++ sunt mai "avansate" majoritatea, printre primele sunt mai "de liceu"... daca ai nevoie de ajutor, PM. multa bafta
  4. what the hell is this sh**? :crazy: e mai degraba un posibil manelist tare
  5. 1. bune nu prea stiu care ar fi ca nu mi par cunoscuti autorii. 2. foarte bune ar fi cele originale, nu traduse si injumatatite(ps: sunt destule and i hate this ). eu una prefer urmatorii autori: Tim Converse, Joyce Park, Clark Morgan Harry Fuecks W. Jason Gilmore am foarte multe in format pdf, in engleza, de la 0-pana la nivel avansat, daca vrei, dai buzz. mai poti invata si d p tutoriale: link, link
  6. ) super tare site.ul... bafta
  7. ptr cei care s.au "saturat" d atat' twilight...
  8. i'm back.....finally:):):):):)

  9. MD5 (Message Digest Algorithm 5) este o funcție criptografică de tip hash unidirecțional, care livrează ca rezultat o valoare fixă ca lungime de 128 Biți. Funcția MD5 a fost dezvoltată în 1991 de Ronald L. Rivest și publicată în 1992 în RFC 1321. Este utilizată drept componentă în unele scheme de semnătură electronică, deși tinde să fie înlocuită în acest scop de SHA-1 sau RIPEMD-160, funcții mai puțin sensibile la coliziuni. Valuarea calculată cu ajutorul funcției MD5 (pe scurt md5sum), este folosită însă pe scară largă drept sumă de control, la verificarea integrității fișierelor. Exemplu de hash: e10adc3949ba59abbe56e057f20f883e. Observam ca: -indiferent de lungimea unei parole, hashul generat va fi de lungime 32. -in cazul metodei SHA1, lungimea hashului este 40. -este un hash ireversibil,deci doar se poate coda, si nu poate fi spart decat cu ajutorul dictionarelor, sau prin bruteforce. Intr-o baza de date (phpbb de exemplu),acest hash se gaseste in tabelul phpbb_users unde se scriu toate detaliile despre un anumit user. Pentru a gasi un astfel de hash la un anumit user,( care reprezinta de altfel si parola lui) intr-o baza de date, este nevoie doar sa dati un simplu search in baza de date cu numele user-ului caruia vreti sa ii aflati hash-ul. Hash-ul intr-o baza de date vine exact dupa nume. Pentru a afla si parola acestuia s-au facut o gramada de site-uri ce contin dictionare cu hash-uri. Mai detaliat: SSL/SSH protejează traversarea datelor de la client la server, însă SSL/SSH nu protejează datele stocate în baza de date. SSL este un protocol de tranzit. Odată ce atacatorul capătă acces la baza de date direct (evitând serverul web), informația stocată poate fi expusă sau abuzată, dacă ea nu este protejată de însăși baza de date. Criptarea datelor este o bună masură pentru a diminua acest risc, însă prea puține baze de date oferă acest tip de criptare. Cea mai ușoară cale de a rezolva problema este de a crea propriul pachet de criptare, și apoi folosirea lui cu scripturile PHP. PHP vă poate ajuta în aceasta prin intermediul câtorva extensii, cum ar fi Mcrypt și Mhash, care acoperă o varietate largă de algoritmi de criptare. Scriptul criptează datele înainte de a fi inserate în baza de date, și le decriptează la extragerea acestora. În cazul datelor care trebuie să fie confidențiale, a căror expunere nu este necesară în nici un context, procedeul hashing poate fi luat în considerare. Aveti aici un mic tutorial de criptare cu md5 si sha1 in php: Link Cat despre limbajul c++, acesta poate fi folosit cu succes la generarea hash-urilor. Pasii pe care trebuie sa i urmati, aici Algoritmul in c++ : ZedWood Cat despre numeroasele dictionare md5, ele genereaza parola "ascunsa" doar in cazul in care hash-ul respectiv se afla in baza lor de date, sau unele, genereaza un hash similar celui dat. Un exemplu aveti aici: My link. (ps: site-ul contine si cateva programe pentru conversii: timestamp, decimal/hexazecimal, etc...)
  10. si daca iau un server d-ala din Kenya si il tin ca proxy, si pe de.asupra lui pun un serviciu dinamic de proxyuri. Din interior in exterior, n-au cum sa imi vada pachetele, din exterior in interior, n-au cum sa ma gaseasca.
  11. Daca trec tot traficul de internet printr-un SSL (certificatul meu), mai ramane acta valabil??dupa parerea mea ,NU. Tehnic nu mai are nimeni cum sa-mi intermedieze (cu folos) pachetele, asa ca daca nu imi monitorizeaza calculatorul in sine, byebye...
  12. fisierul index.html: <html> <head> </head> <body> <form action="subscribe.php" method="post"> <p> Name:<br \> <input type="text" id="name" name="name" size="20" maxlength="40" /> </p> <p> E-mail Address: <br /> <input type="text" id="email" name="email" size="20" maxlength="40" /> </p> <input type="submit" id="submit" name="submit" value="submit" /> </form> </body> </html> fisierul subscribe.php: <?php //function used to check e-mail syntax function validateEmail($email) { //create the e-mail validation regular expression $regexp="^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9]+)(\.[a-z0-9-]+)*(\.[a-z]{2,6})$"; //validate the syntax if(eregi($regexp, $email)) return 1; else return 0; } //has the form been submitted? if(isset($_POST['submit'])) { $name=htmlentities($_POST['name']); $email=htmlentities($_POST['email']); printf("Hi %s <br />", $name); if(validateEmail($email)) printf("The address <strong>%s</strong> is valid!", $email); else printf("The address <strong>%s</strong> is invalid", $email); } ?>
      • 1
      • Downvote
  13. Formular de inregistrare register.php <?php require_once('register_funcs.inc'); if($submit=='Mail confirmation') { $feedback=user_register(); //in every case, successful or not, there will be the feedback $feedback_str="<p class=\"errormess\">$feedback</p>"; } else { //show form for thr first time $feedback_str=''; } //---------------------------------------------------------------- //DISPLAY THE FORM //---------------------------------------------------------------- include_once('header_footer.php'); site_header('Registration'); //superglobals don t work with heredoc $php_self=$_SERVER['PHP_SELF']; $reg_str= <<< EOREGSTR <table cellpadding=0 cellspacing=0 border=0 align=center width=621> <tr> //---------------- //<td rowspan=10> //<img width=15 height=1 src="../images/spacer.gif"></td> //---------------- <td width=606> </td> </tr> <tr> <td> $feedback_str <p class="left"><b>REGISTER</b> <br> Fill out this form and a confirmation email will be sent to you. Once out this click on the link in the email your account will be confirmed and you can begin to contribute to the community.</p> <form action="$php_self" method="POST"> <p class="bold">First name<br> <input type="text" name="first_name" value="$first_name" size="20" maxlength="25"></p> <p class="bold">Last name<br> <input type="text" name="last_name" value="$last_name" size="20" maxlength="25"></p> <p class="bold">Username<br> <input type="text" name="user_name" value="$user_name" size="10" maxlength="25"></p> <p class="bold">Password<br> <input type="password" name="password1" value=" " size="10" maxlength="25"></p> <p class="left"><b>Password</b> (again)<br> <input type="password" name="password2" value=" " size="10" maxlength="25"></p> <p class="left"><b>Email</b> (required for confirmation)<br> <input type="text" name="email" value="$email" size="30" maxlength="50"> </p> <p><input type="submit" name="submit" value="Mail confirmation"> </p> </form> </td> </tr> EOREGSTR; echo $reg_str; site_footer(); ?> fis. register_funcs.inc <?php //a file with the database host, user, password, and selected database include_once("db_vars.inc"); //a string used for md5 encryption. You could move it to a file outside the web tree for more security $supersecert_has_padding="A string that is used to pad out short strings for md5 encryption. "; //this function will only work with superglobal arrays, because i'm not passing in any values or declaring globals function user_register() { global $supersecret_hash_padding; //are all vars present and password match? if(strlen($_POST['user_name'])<=25 && strlen($_POST['password1'])<=25 && ($_POST['password1'] == $_POST['password2']) && strlen($_POST['email'])<=50 && validate_email($_POST['email'])) { //validate username and password if(account_namevalid($_POST['user_name']) || strlen($_POST['password1']>=6)) { $user_name=strtolower($_POST['user_name']); $user_name=trim($user_name); //don't need to escape, because single quotes aren't allowed $email=$_POST['email']; //don't allow duplicate usernames or emails $query=mysql_query($query); if($result && mysql_num_rows($result)>0) { $feedback='ERROR --Username or email address already exists'; return feedback; } else{ $first_name=$_POST['first_name']; $last_name=$_POST['last_name']; $password=md5($_POST['password1']); $user_ip=$_SERVER['REMOTE_ADDR']; //create a new hash to insert into the db and the confirmation email $hash=md5($email.$supersecret_hash_padding); $query="INSERT INTO user (user_name, first_name, last_name, password, email, remote_addr, confirm_hash, is_confirmed, date_created) VALUES ('$user_name', '$first_name', '$last_name', '$password', '$email', '$user_ip', '$hash', '0', NOW())"; $result=mysql_query($query); if(!$result) { $feedback='ERROR--Database error'; return $feedback; } else{ //send the confirmation email $encoded_email=urlencode($_POST['email']); $mail_body= <<< EOMAILBODY Tahnk you for registering at Example.com Click this link to confirm your registration: http://localhost/confirm.php?hash=$has$email=$encoded_email Once you see a confirmation message, you will be logged into Example.com EOMAILBODY; mail($email, 'Example.com Registration Confirmation', $mail_body, 'From: noreply@example.com'); //Give a successful registration message $feddback='YOU HAVE SUCCESSFULLY REGISTERED. You will receive a confirmation email soon'; return $feedback; } } } else { $feedback='ERROR--Username or password is invalid'; return $feedback; } } else{ $feedback='ERROR--please fill in all fields correctly'; return $feedback; } } function account_namevalid() { //parameter for use with strspan $span_str="abcdefghijklmnopqrstuvxwyz" . "ABCDEFGHIJKLMNOPQRSTUVXWYZ0123456789-"; //must have at least one character if(strspn($_POST['user_name'], $span_str)==0) { return false; } //must contain all legal characters if(strspn($_POST['user_name'], $span_str)!=strlen($name)) { return false; } //min and max length if(strlen($_POST['user_name'])<5) { return false; } if(strlen($_POST['user_name'])>25) { return false; } //illegales names if(eregi("^((root)|(bin)|(daemon)|(adm)|(lp)|(sync)|(shutdown)|(halt)|(mail)|(news)|(uucp)|(operator)|(games)|(mysql)|(httpd)|(nobody)|(dummy)|(www)|(cvs)|(shell)|(ftp)|(irc)|(debian)|(ns)|(download))$", $_POST['user_name'])) { return false; } if(eregi("^(anoncvs_)", $_POST['user_name'])) { return false; } return true; } function validate_email() { return (ereg('^[=!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'. '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.' . '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $_POST['email'])); } function user_confirm() { //this function will only work with the superglobal arrays, because i'm not passing in any values or declaring globals global $supersecret_hash_padding; //verify that they didn't tamper with the email address $new_hash=md5($_GET['email'].$supersecret_hash_padding); if($new_hash && ($new_hash==$_GET['hash'])) { $query="SELECT user_name FROM user WHERE confirm_hash='$new_hash'"; $result=mysql_query($query); if(!result || mysql_num_rows($result)<1) { $feedback='ERROR--Hash not found'; return $feedback; } else{ //confirm the email and set accout to active $email=$_GET['email']; $hash=$_GET['hash']; $query="UPDATE user SET email='$email', is_confirmes='1' WHERE confirm_hash='$hash'"; $result=mysql_query($query); return 1; } } else { $feedback='ERROR--Values do not match'; return $feedback; } } ?>
      • 2
      • Upvote
  14. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> <head> <title>Validating User Input.</title> <style type="text/css"> <!-- label,input { display: block; width: 150px; float: left; margin-bottom: 10px; } label { text-align: right; width: 75px; padding-right: 20px; } br { clear: left; } --> </style> </head> <body> <h3>* denotes required field!</h3> <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post"> <p> <label for="name">Name</label> <input id="name" type="text" name="userName" maxlength="25" />*<br /> <label for="address">Address</label> <input id="address" type="text" name="userAddress" maxlength="100" /><br /> <label for="city">City</label> <input id="city" type="text" name="userCity" maxlength="25" /><br /> <label for="zip">Zip</label> <input id="zip" type="text" name="userZip" maxlength="5" /><br /> <label for="email">Email</label> <input id="email" type="text" name="userEmail" maxlength="50" />*<br /> <label for="submit">Submit</label> <input id="submit" type="submit" value="Mail It!" /><br /> </p> </form> <?php /** * This function can be used to check the sanity of variables * * @access private * * @param string $type The type of variable can be bool, float, numeric, string, array, or object * @param string $string The variable name you would like to check * @param string $length The maximum length of the variable * * return bool */ function sanityCheck($string, $type, $length){ // assign the type $type = 'is_'.$type; if(!$type($string)) { return FALSE; } // now we see if there is anything in the string elseif(empty($string)) { return FALSE; } // then we check how long the string is elseif(strlen($string) > $length) { return FALSE; } else { // if all is well, we return TRUE return TRUE; } } /** * This function if the $_POST vars are set * * @access private * * return bool */ function checkSet(){ return isset($_POST['userName'], $_POST['userAddress'], $_POST['userCity'], $_POST['userZip'], $_POST['userEmail']); } /** * This function checks a number is greater than zero * and exactly $length digits. returns TRUE on success. * * @access private * * @param int $num The number to check * @param int $length The number of digits in the number * * return bool */ function checkNumber($num, $length){ if($num > 0 && strlen($num) == $length) { return TRUE; } } /** * This function checks if an email address in a valid format * * @access private * * @param string $email The email address to check * * return bool */ function checkEmail($email){ return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE; } // check all our variables are set if(checkSet() != FALSE) { // check the POST variable userName is sane, and is not empty if(empty($_POST['userName'])==FALSE && sanityCheck($_POST['userName'], 'string', 25) != FALSE) { //If all is well we can assign the value of POST field to a variable $userName = $_POST['userName']; } else { // if all is not well, we echo an error and exit the script echo 'Username is not set'; exit(); } // here we test for the sanity of userAddress, we dont need to stop the // the script if it is empty as it is not a required field. if(sanityCheck($_POST['userAddress'], 'string', 100) != FALSE) { // if all is well we assign the userAddress to a variable $userAddress = $_POST['userAddress']; } else { // if all is not well, we simply give the userAddress a blank value $userAddress = ''; } // here we test for the sanity of userCity, we dont need to stop the // the script if it is empty as it is not a required field. if(sanityCheck($_POST['userCity'], 'string', 25) != FALSE) { // again we assign the POSTed value to a variable $userCity = $_POST['userCity']; } else { // or give the variable a blank value $userCity = ''; } // check the sanity of the number and that it is greater than zero and 5 digits long if(sanityCheck($_POST['userZip'], 'numeric', 5) != FALSE && checkNumber($_POST['userZip'], 5) == TRUE) { // if the number is valid, we assign it to a variable $userZip = $_POST['userZip']; } else { // or give the variable a blank value $userZip=''; } // check the sanity of the userEmail sent from the form if(sanityCheck($_POST['userEmail'], 'string', 5) != FALSE && checkEmail($_POST['userEmail']) != FALSE) { // if the checks are ok for the email we assign the email address to a variable $userEmail = $_POST['userEmail']; } else { // if all is not well we echo an error message echo 'Invalid Email Address Supplied'; // and exit the script exit(); } // Connect to the MySQL $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Not connected : ' . mysql_error()); } // select test as the current db $db_selected = mysql_select_db('test', $link); if (!$db_selected) { die ("Database not selected : " . mysql_error()); } // Build our query here and check each variable with mysql_real_escape_string() $query = sprintf("INSERT INTO people (userName, userAddress, userCity, userZip, userEmail) VALUES( '%s', '%s','%s','%s','%s')", mysql_real_escape_string($userName), mysql_real_escape_string($userAddress), mysql_real_escape_string($userCity), mysql_real_escape_string($userZip), mysql_real_escape_string($userEmail)); // run the query if(!mysql_query($query)) { echo 'Query failed '.mysql_error(); exit(); } else { // if all is well we mail off a little thank you email. We know it is // safe to do so because we have validated the email address. $subject = 'Submission'; $msg= 'Thank you for submitting your information'; if(!mail($userEmail,$subject,$msg, "From: $userEmail\nReply-To: $userEmail\nX-Mailer: PHP/" . phpversion())) { echo 'Unable to send confirmation mail'; } else { echo 'Thank you for your submission, a confirmation email has bee sent to '.$userEmail; } } } else { // this will be the default message if the form accessed without POSTing echo '<p>please fill in the form above</p>'; } ?> </body> </html> ptr cele doua checkbox-uri faci la fel ca pentru validarea numelui...inlocuiesti doar campurile.
  15. iese mai usor in php...inca mai lucrez la partea cu validatorul..revin
  16. urmeaza pasii d aici: 1. Start –> Control Panel –> Scrie in casuta de cautare "Defender" apoi da click pe "Windows Defender": 2. Imediat dupa deschiderea programului, da click pe "Tools", apoi pe "Options": 3. In urmatoarea fereastra da click pe "Administrator", debifeaza casuta "Use this program" si da click pe "Save" pentru a confirma:
  17. sall..poti fi putin mai explicit?
  18. Funcţiile de parcurgere a cataloagelor de fişiere descrise mai jos (opendir, readdir, closedir) sunt definite de mai multe medii de programare C (printre care şi GNU C pentru sistemul de operare Linux), precum şi de standardul POSIX. Aceste funcţii sunt declarate în <dirent.h>. Funcţiile de redenumire şi ştergere a unor fişiere sunt descrise în <stdio.h>. Nume opendir - deschide un director Declaraţie DIR *opendir(const char *nume); Descriere Funcţia opendir deschide un flux pentru directorul cu numele nume, şi returnează un pointer la fluxul deschis. Fluxul este poziţionat pe prima intrare din director. Valoare returnată Funcţia returnează un pointer la flux în caz de succes, sau NULL în caz de eroare şi variabila globală errno indică codul erorii. Câteva erori posibile EACCES Acces interzis ENOTDIR nume nu este un director Nume readdir - citeşte dintr-un director Declaraţie struct dirent *readdir(DIR *dir); Descriere Funcţia readdir returnează un pointer la o structură de tip dirent care reprezintă următoarea intrare din directorul indicat de fluxul dir. Returnează NULL dacă s-a depistat sfârşitul de director sau dacă a apărut o eroare. Structura de tip dirent conţine un câmp char d_name[]. Utilizarea altor câmpuri din structură reduce portabilitatea programelor. Valoare returnată Funcţia returnează un pointer la o structură de tip dirent, sau NULL dacă s-a depistat sfârşitul de director sau dacă a apărut o eroare. Nume closedir - închide un director Declaraţie int closedir(DIR *dir); Descriere Funcţia closedir închide fluxul dir. Valoare returnată Funcţia returnează 0 în caz de succes sau EOF în caz de eroare. Nume rename - redenumeşte un fişier remove - şterge un fişier Declaraţie int rename(const char *old, const char *new); int remove(const char *name); Descriere Funcţia rename schimbă numele unui fişier din old în new. Dacă a fost precizat un periferic în new, acesta trebuie să coincidă cu cel din old. Directoarele din old şi new pot să fie diferite, astfel că rename poate fi folosită pentru a muta un fişier dintr-un director în altul. Nu se permit specificatori generici (wildcards). Funcţia remove şterge fişierul specificat prin name. Valoare returnată În caz de succes se returnează 0. În caz de eroare se returnează EOF şi variabila globală errno indică codul erorii. Programe demonstrative 1) Determinarea mărimii unui fişier #include <stdio.h> FILE *f; int main(int ac, char **av) { if (ac!=2) { fputs("Un argument!\n",stderr); return 1; } f = fopen(av[1],"rb"); if (!f) { perror("Eroare la deschidere"); return 1; } fseek(f,0,SEEK_END); fprintf(stderr,"File %s, size %ld\n",ftell(f)); fclose(f); return 0; } 2) Copierea unui fişier a). Funcţiile fgets şi fputs se folosesc pentru fluxuri deschise în mod text. Cum se utilizează pentru copierea unui fişier text? #include <stdio.h> #define LSIR 80 char lin[LSIR]; FILE *fi, *fo; int main(int ac, char **av) { if (ac!=3) { fputs("Doua argumente!\n",stderr); } fi=fopen(av[1],"rt"); fo=fopen(av[2],"wt"); if (!fi || !fo) { perror("Eroare la deschidere"); return 1; } while (fgets(lin,LSIR,fi)) fputs(lin,fo); fclose(fi); fclose(fo); return 0; } b). Funcţiile fread şi fwrite se folosesc pentru fluxuri deschise în mod binar. Cum se utilizează pentru copierea unui fişier binar? #include <stdio.h> #define LZON 4096 char zon[LZON]; FILE *fi, *fo; unsigned k; int main(int ac, char **av) { if (ac!=3) { fputs("Doua argumente!\n",stderr); return 1; } fi=fopen(av[1],"rb"); fo=fopen(av[2],"wb"); if (!fi || !fo) { perror("Eroare la deschidere"); return 1; } while (k=fread(zon,1,LZON,fi)) fwrite(zon,1,k,fo); fclose(fi); fclose(fo); return 0; } 3) Prelucrarea unui fişier text Programul prezentat în continuare citeşte un fişier text care conţine pe fiecare linie un şir de caractere (fără spaţii) şi trei valori întregi, şi afişează pe terminal numele pe 12 poziţii aliniat la stânga şi media aritmetică a celor trei valori întregi. #include <stdio.h> FILE *fi; char num[10]; int a,b,c; double m; int main(int ac, char **av) { if (ac!=2) { fputs("Un argument!\n",stderr); return 1; } fi=fopen(av[1],"rt"); if (!fi) { perror("Eroare la deschidere"); return 1; } while (fscanf(fi,"%s %d %d %d",num,&a,&b,&c)!=EOF) { m=(a+b+c)/3.0; printf("%-12s%6.2lf\n",num,m); } fclose(fi); return 0; } 4) Afişarea conţinutului unui director #include <dirent.h> #include <stdio.h> DIR *dir; struct dirent *ent; int main(int ac, char **av) { if (ac!=2) { printf("Un parametru\n"); return 1; } dir = opendir(av[1]); if (!dir) { perror("Eroare open dir"); return 1; } while (ent=readdir(dir)) printf("%s\n",ent->d_name); return 0; }
      • 2
      • Upvote
  19. da stiu ca e enervant dar trebuie sa scapam d boti...nush cate forumuri am cautat si peste tot e acelasi sistem, pana si intrb aia cu "p a m a n t u l scris inversat etc..." si nu am vazut sa aiba probleme cu botii it's not fair..
  20. hmmm... referitor la intrebari nu prea am idei acum...dar ce ar fi sa schimbi ceva la parola: gen sa aiba cel putin un caracter mare, o cifra si cel putin un caracter non-alfanumeric??
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.