Acces cu Nume si Parola la pagina php

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

Acces cu Nume si Parola la pagina php

Buna. As dori sa ma ajutati si pe mine. Am o file, register.php, si vreau sa pun ca atunci cand o acceseaza cineva, de fiecare data, sa apara un mesaj ca aici: http://board.4story.ro/acp
cu numele de user si parola dintr-un fisier cu useri si parola, si abia apoi sa intre pe pagina respectiva sau sa apara ca nu a fost bun daca e gresit user/parola. Vreau sa fac chestia asta pe un site Travian 1.000.000x ca sa blochez accesul celorlalte persoane, doar colegii cu userul si parola care le-o dau.
Deci vreau scriptul si informatii cum sa-l pun, cum e cu fisierul cu parola,etc. Mersi anticipat

claUdiu Mesaje:313
Daca e doar o parola, si tu o dai colegilor, atunci e usor:

Faci o variabila cu username, iar alta cu parola, si dupa aceea un if:

Cod: Selectaţi tot

if($nume2 !== $nume1){
echo "Numele e gresit!";
}else if($parola2 !== $parola2){
echo "Parola e gresita";
}else{
echo "Redirect catre pagina personala";
} 
$nume2 si $parola2 sunt datele care vin de la formular. Daca vrei ceva mai "bun" atunci poti face cu db. MAi multe detalii pe site.
Se spune ca...."omul tot invata in viata". Dar...Totusi...Trebie sa ne oprim undeva, nu?

MarPlo Mesaje:4343
Daca vrei ca Autentificarea sa se faca cum e la pagina data ca exemplu, poti folosi urmatorul cod (trebuie ca PHP sa aibe safe_mode Off):

Cod: Selectaţi tot

$username = 'nume';
$pass = 'parola';
if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER["PHP_AUTH_USER"] != $username || $_SERVER["PHP_AUTH_PW"] != $pass) {
    header('WWW-Authenticate: Basic realm="Adaugati Numele si Parola"');
    header('HTTP/1.0 401 Unauthorized');
    echo '<h1>Text care apare daca apasa Cancel</h1>';
    exit;
}
echo 'Bine ai venit'; 

AndreyIstetul Mesaje:53
Buna. Scuze, nu am reusit cu paginile voastre, nici nu prea m-am straduit. Dar am pagina:

Cod: Selectaţi tot

<?php
// Configuration
// your password. replace password with your password
$mypassword = "parola"; 
// your domain (without www. and http://), replace domain.com with your domain
$mydomain = "traviangreen.garajul-it.com";

$mypassword = sha1($mypassword); // password is encrypted using sha1
if(sha1($_POST['password'])==$mypassword && $_COOKIE["pass"] != $mypassword){
    setcookie("pass", sha1($_POST['password']), time()+315569250, "/", ".$mydomain"); // set the cookie
    $_COOKIE["pass"] = sha1($_POST['password']);
}

if($_COOKIE["pass"]!=$mypassword){
?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
"http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
  <title>TE ROG LOGHEAZA-TE</title>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <style type="text/css">
    html{
      text-align: center;
    }
  </style>
</head>
<body>  
      <h1>PAROLA NECESARA</h1>
      <p>!!!Pentru a accesa aceasta pagina, trebuie sa introduci PAROLA!!!</p>
      <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
        <input type="password" name="password" />
        <input name="pass" type="submit" class="submit" id="submit" value="Submit" />
      </form>
      <a href="http://traviangreen.garajul-it.com/">TravianGreen</a>
</body>
</html> 

<?php
  exit();
}
?>
Merge bine, dar am o intrebare: Vreau sa adaug mai multe parole. Adica cand se autentifica sa mearga si parola, dar si parola1(sa zicem). Cum fac asta?

MarPlo Mesaje:4343
Daca esti multumit cu scriptul dat mai sus si-l vrei cu mai multe parole, poti folosi array. Cam asa pentru codul tau:

Cod: Selectaţi tot

// array cu parole
$mypassword = array('pass1', 'pass2', 'pass3');

// your domain (without www. and http://), replace domain.com with your domain
$mydomain = "traviangreen.garajul-it.com";

$mypassword2 = array_map("sha1", $mypassword);              // password is encrypted using sha1
if(in_array(sha1($_POST['password']), $mypassword2) && !in_array($_COOKIE["pass"], $mypassword2)){
  setcookie("pass", sha1($_POST['password']), time()+315569250, "/", ".$mydomain"); // set the cookie
  $_COOKIE["pass"] = sha1($_POST['password']);
}

if(!in_array($_COOKIE["pass"]), $mypassword2)) {
// ... 

djantonik Mesaje:21
In cazul unei autentificari de genul acesta cum se face o delogare ? Am observat ca daca te loghezi, urmatoarea data cand iti cere numele si parola este dupa ce dai restart.
Învaţă ce iţi trebuie, nu ce trebuie !!

MarPlo Mesaje:4343
Fiindca pastrezi datele in cookie, delogarea se face stergand acel cookie, adica setandu-l cu o valoare de timp negativa (vezi in cursul php de pe site despre cookie, sau pe net).
Oricum, acest script de autentificare, copiat, e "slab". Mai bine studiezi cateva lectii de php (lucru cu variabile, instructiuni conditionale, sesiuni) si inveti sa faci tu ce ai nevoie.

djantonik Mesaje:21
MarPlo scrie:Fiindca pastrezi datele in cookie, delogarea se face stergand acel cookie, adica setandu-l cu o valoare de timp negativa (vezi in cursul php de pe site despre cookie, sau pe net).
Oricum, acest script de autentificare, copiat, e "slab". Mai bine studiezi cateva lectii de php (lucru cu variabile, instructiuni conditionale, sesiuni) si inveti sa faci tu ce ai nevoie.
Si mie mi se pare slab. M-ai sigur mi se pare cu baza de date si cu sesiuni.
Învaţă ce iţi trebuie, nu ce trebuie !!

AndreyIstetul Mesaje:53
Buna. Da, probabil ca din punctul vostru de vedere e slab, dar pentru mine e exact ce-mi trebuie. Nu am nevoie de logare de fiecare data, o logare si atat. Deci mersi, TC please.

Subiecte similare