Verifica date din formular daca sunt in fisier / Verifica IP

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
alexlemnean
Mesaje:14

Verifica date din formular daca sunt in fisier / Verifica IP

Salut din nou.
Vreau sa imi spui cum as putea face ca atunci cand un utilizator imi completeaza pe site un formular de genu:

Cod: Selectaţi tot

Alegeti echipa favorita: 
User Name:
Password:
scriptul sa verifice daca la "User Name" si "Password" au fost introduse date dintr-un fisier 'date.txt', iar daca au fost introduse sa il trimita catre o pagina anume, iar daca nu sa ii afiseze "User Name sau Parola gresita! Incearca din nou cu mai multa atentie!".
In fisierul 'date.txt' sunt salvate date de inscriere pe site, adica fiecare utilizator trebuie sa se inscrie pe site prin completarea unui formular simplu in care introduce un "User Name" si o "Parola", iar aceste date sunt salvate intr`un fisier 'date.txt'.
Utilizatorii nu sunt obligatii sa se Logheze dar acele date sunt cerute la Inscrierea in Competitii sau Provocarea unui alt User , iar pentru acestea trebuie verificare daca sunt aceleasi date introduse la Inscrierea pe Site.

2. As mai avea o intrebare: se poate ca un utilizator sa poate
accesa o anumita pagina dupa ip`ul sau? Adica la acea pagina sa aiba acces o lista de ip`uri ?

Multumesc inca o data pentru ajutorul acordat pana acum.

MarPlo Mesaje:4343
Salut
Depinde cum ai datele salvate (structurate) in fisier, unele sub altele, separate printr-un anumit caracter, ori altfel mai complex.
- In general, datele de logare se pastreaza intr-o baza de date, precum MySQL, e mai sigur; fisierul text cu datele poate fi accesat direct din brower de catre utilizatori.

2. La intrebarea despre IP, poti adauga lista de ip-uri intr-un array, se preia ip-ul utilizatorului cu:
$_SERVER['REMOTE_ADDR']
Apoi se verifica daca este in acel array. Cam asa:

Cod: Selectaţi tot

<?php
$ipuri = array('1.2.34.33', '33.44.23.123', '78.55.74.21', '34.65.33.125');
$ip = $_SERVER['REMOTE_ADDR'];
if(in_array($ip, $ipuri)) {
  // afiseaza pagina
}
else echo 'Access nealocat';
 

alexlemnean Mesaje:14
Datele le`as dori salvate intr`un fisier care sa arate de genu:
User1Parola1User2Parola2 etc.

sau separate prin caracterul "#" :
User1#Parola1#User2#Parola2 etc.

Am incercat cu exemplu dat de tine la problema cu ip dar nu am reusit.

Cod: Selectaţi tot

<?php
$user = file_get_contents('date.txt');
$user = Array();
$nume = $_GET['nume'];

if(in_array($nume, $user)) {
  
  echo 'felicitari !';
}
else echo 'Access nealocat';
?>

MarPlo Mesaje:4343
Daca datele sunt salvate sub forma asta (pe fiecare linie o singura pereche: nume#parola).

Cod: Selectaţi tot

User1#Parola1
User2#Parola2
Ai putea folosi si adapta in scriptul tau acest cod:

Cod: Selectaţi tot

<?php
// daca e trimis nume si parola prin $_POST sau $_GET
if(isset($_REQUEST['nume']) && isset($_REQUEST['parola'])) {
  $logare = false;       // inca nelogat
  $nume = trim($_REQUEST['nume']);
  $parola = trim($_REQUEST['parola']);

  // preia intr-un array datele din fisier
  $date_logare = file('date.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
  $nr_np = count($date_logare);        // numar de linii cu nume#parola

  // parcurge datele
  for($i=0; $i<$nr_np; $i++) {
    $nume_parola = explode('#', $date_logare[$i]);       // separa nume si parola de pe linia parcursa

    // verifica daca exista si corespund nume si parola
    if($nume_parola[0] == $nume && $nume_parola[1] == $parola) {
      $logare = true;
      break;
    }
  }

  if($logare === true) {
    echo 'Felicitari';
  }
  else echo 'Date logare incorecte';
}
?>

alexlemnean Mesaje:14
Scriptu` l-am inteles, dar cum sa salvez date sub forma :
User1#Parola1
User2#Parola2.
Am incercat cu $fwrite() dar aceasta mi le salveaza sub forma
User1#Parola1#User2#Parola2 etc.

Mai am ceva ... cum fac ca aici :

Cod: Selectaţi tot

if(in_array($ip, $ipuri)) {
  // afiseaza pagina
}
sa afisez o pagina ?

MarPlo Mesaje:4343
Ca sa adaugi urmatoarele date pe rand nou, se adauga caracterul de linie noua, "\n", sau PHP_EOL in fata sirului cu acele date.
Exemplu:

Cod: Selectaţi tot

$file = 'date.txt';
$date = PHP_EOL .'User2#Parola2';
if(file_put_contents($file, $date, FILE_APPEND | LOCK_EX)) echo 'Date adaugate';
else echo 'Nu a putut adauga datele';
 
Pagina o afisezi cum stii, dupa cum sunt salvate si construite datele /continutul paginii. Daca acel continut e intr-un fisier extern, se poate prelua cu file_get_contents() si se afiseaza cu "echo", sau cum stii tu sa iti faci script-ul.
Mai vezi prin lectiile si tutorialele de pe site, sau pe internet; poate ajuta sa inveti cate ceva din ele.

Subiecte similare