Curs Php-mysql

Acest tutorial arata cum se poate crea CAPTCHA, cod de verificare anti-spam in PHP (CAPTCHA e acronimul de la: Completely Automated Public Turing test to tell Computers and Humans Apart).
Sunt prezentate doua functii pentru CAPTCHA: suma a doua numere, si cel mai mic numar.
Ideea este simpla: inainte de a genera codul HTML cu intrebarea de verificare CAPTCHA si caseta de adaugare raspuns, se creaza codul captcha si se retine in $_SESSION raspunsul corect. Apoi, cand se face verificarea raspunsului, se verifica daca acea sesiune exista si este egala cu raspunsul adaugat de utilizator.

CAPTCHA cu suma a doua numere

Aceasta functie poate fi utilizata pentru a crea un CAPTCHA de verificare cu suma a doua numere intre 1 si 50; salveaza in sesiune raspunsul corect.
// creaza SESSION cu suma a doua numere. Primeste numele sesiunii
// returneaza un array cu numerele
// De la: // https://marplo.net/php-mysql/
function setCaptcha($ses_name) {
  $nrs = array(mt_rand(1, 50), rand(1, 50));      // array cu 2 numere aleatorii, intre 1 si 50

  // daca sesiunea exista o sterge, seteaza sesiunea cu suma $nrs[0] si $nrs[1]
  if(isset($_SESSION[$ses_name])) { unset($_SESSION[$ses_name]); }
  $_SESSION[$ses_name] = $nrs[0] + $nrs[1];

  return $nrs;        // returneaza' array-ul cu numerele
}
• In script-ul PHP care foloseste $_SESSION trebuie adaugat session_start() la inceputul fisierului php.

Exemplu utilizare functie setCaptcha()

- Urmatorul cod genereaza o pagina HTML cu un formular cu sistem CAPTCHA de verificare. Codul captcha se modifica la fiecare generare a paginii.
<?php
if(!isset($_SESSION)) session_start();

// creaza SESSION cu suma a doua numere. Primeste numele sesiunii
// returneaza un array cu numerele
// De la: // https://marplo.net/php-mysql/
function setCaptcha($ses_name) {
  $nrs = array(mt_rand(1, 50), rand(1, 50));      // array cu 2 numere aleatorii, intre 1 si 50

  // daca sesiunea exista o sterge, seteaza sesiunea cu suma $nrs[0] si $nrs[1]
  if(isset($_SESSION[$ses_name])) { unset($_SESSION[$ses_name]); }
  $_SESSION[$ses_name] = $nrs[0] + $nrs[1];

  return $nrs;        // returneaza' array-ul cu numerele
}

// apeleaza functia ce adauga raspunsul captcha in $_SESSION['captcha'], si preia numerele
$nrs = setCaptcha('captcha');

// seteaza sirul pt afisarea adunarii numerelor
$ver_question = $nrs[0] .'&nbsp;+&nbsp;'. $nrs[1];
?>
<!doctype html>
<html lang="ro">
<head>
<meta charset="utf-8" />
<title>Captcha anti-spam, Tutorial PHP - http://www.MarPlo.net/</title>
<meta name="description" content="Creare cod captcha anti-spam, Tutorial PHP de la: http://www.MarPlo.net/" />
<meta name="keywords" content="php tutorial, captcha, www.MarPlo.net" />
</head>
<body>

<form action="some_file.php" method="post">
Nume: <input type="text" name="yname" /><br/>
Cat face: <span style="font-weight:800; font-size:1.1em; color:#0001e8;">
<?php echo $ver_question; ?>
</span> <input type="text" name="vcptca" size="3" /><br/>
<input type="submit" name="fsbmt" value="Trimite" />
</form>

</body>
</html>

- In "some_file.php" se verifica daca e trimis campul cu raspunsul de la captcha, daca $_SESSION['captcha'] exista si este egala cu valoarea de la $_POST['vcptca'] (caseta in care utilizatorul a adaugat raspunsul).
<?php
if(!isset($_SESSION)) session_start();

// daca formularul cu $_POST['vcptca'] e trimis, si $_SESSION['captcha'] exista
if(isset($_POST['vcptca']) && isset($_SESSION['captcha'])) {
  // daca valoarea din 'vcptca' este egala cu cea din sesiune, afisaza Corect
  // altfel, afisaza Incorect
  if($_POST['vcptca'] == $_SESSION['captcha']) {
    echo 'Corect '. $_SESSION['captcha'];
  }
  else {
    echo 'Incorect.';
  }
}
else {
  echo 'Formular netrimis';
}

CAPTCHA cu cel mai mic numar

Urmatoarea functie poate fi utilizata pentru un CAPTCHA cu cel mai mic numar. Returneaza un array cu 4 numere unice, alese aleator intre 1 si 100, raspunsul (cel mai mic numar) e retinut in $_SESSION.
// creaza SESSION cu cel mai mic numar din 4 numere. Primeste numele sesiunii
// returneaza un array cu cele 4 numere
// De la: // https://marplo.net/php-mysql/
function setCaptcha2($ses_name) {
  // creaza un array cu numere de la 1 la 100
  $nrs = range(1, 100);

  // amesteca elementele din $nrs, extrage si pastreaza primele 4
  shuffle($nrs);
  $nrs = array_slice($nrs, 0, 4);

  // daca sesiunea exista o sterge, seteaza sesiunea cu cel mai mic numar
  if(isset($_SESSION[$ses_name])) { unset($_SESSION[$ses_name]); }
  $_SESSION[$ses_name] = min($nrs);

  return $nrs;        // returneaza array-ul cu numerele
}
- Apoi se apeleaza functia setCaptcha2() pentru a obtine cele 4 numere (cel mai mic numar va fi retinut in $_SESSION), si se foloseste implode() ca sa fie adaugate numerele intr-un sir cu intrebarea de verificare.
<?php
// Aici se adauga functia setCaptcha2()

// seteaza $_SESSION['captcha'] cu raspunsul si obtine numerele
$nrs = setCaptcha2('captcha');

// seteaza sirul cu intrebarea de verificare
$ver_question = 'Add the lowest number ('. implode(', ', $nrs) .')';

echo $ver_question;        // afisaza sirul

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut e folosit in tag-ul <a> pentru adresa link-ului?
src href rel
<a href="http://coursesweb.net/" title="CoursesWeb.net">CoursesWeb.net</a>
Ce proprietate CSS seteaza tipul fontului utilizat?
font-family text-decoration font-size
h2 {
  font-family:"Calibri", sans-serif;
}
Ce instructiune selecteaza toate tag-urile <div> cu class="cls"?
querySelector("div.cls") getElementsByTagName("div") querySelectorAll("div.cls")
var elm_list = document.querySelectorAll("div.cls");
var nr_elms = elm_list.length;       // numar elemente selectate
alert(nr_elms);
Indicati functia care returneaza suma valorilor dintr-un array.
array_sum() array_diff() array_shift()
$arr =[1, 2, 3, 4);
$arr_sum = array_sum($arr);
echo $arr_sum;       // 10
Indicati forma corecta a verbului "study" (a studia) la Trecutul Simplu in aceasta propozitie: "We (study) English."
studyed studys studied
We studied English.
- Noi am studiat engleza.
Indicati forma corecta a verbului "decir" (a spune) la Prezent in aceasta propozitie: "Yo (decir) siempre la verdad."
digas digo decir
Yo digo siempre la verdad.
- Eu spun mereu adevarul.
Creare CAPTCHA cod verificare anti-spam

Last accessed pages

  1. Lectii audio-video de limba engleza (15457)
  2. Titluri, Paragrafe, Un nou rand, Linie orizontala (19609)
  3. Articole - Exercitii si teste engleza incepatori (4474)
  4. Lucrul cu mai multe cadre (2490)
  5. Verbe reflexive 2 (814)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (5365)
  2. Curs HTML gratuit Tutoriale HTML5 (4411)
  3. Curs si Tutoriale JavaScript (3776)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (3698)
  5. Curs CSS Online Tutoriale CSS3 (3651)