Pagina 1 din 2
Retine, Salveaza Logare
Scris: Mie Oct 31, 2012
de alexinio3d
Mi-ati putea da si mie o idee cum sa fac sami ramana salvat in cont si sa nu mai trebuiasca sa ma loghez de fiecare data cand schimb pagina ?
As vreau sa stiu cum as putea face un fel de "Retine" pe acele portiuni de site unde trebuie cont .
Va multumesc.
Retine, Salveaza Logare
Scris: Mie Oct 31, 2012
de MarPlo
Salut
Daca vrei sa ramana salvata Logarea cand utilizatorul trece de la o pagina la alta, se foloseste $_SESSION.
Important:
session_start(); trebuie sa fie adaugat la inceputul scripului PHP de logare.
Se salveaza datele in sesiune, apoi, se verifica daca acea sesiune exista, si se preia datele din ea
Vezi lectia de pe site
Utilizare sesiuni PHP, sau cauta si pe forum subiecte legate de "Session".
Daca vrei ca datele de logare sa ramana salvate pe calculatorul utilizatorului dupa ce inchide browser-ul, sa se autentifice automat la urmatoarea vizita, se foloseste Cookie. Dar pt asta trebuie sa aiba browser-ul cu Cookie lasat activ.
Se adauga datele de logare in Session si Cookie. Apoi, la fiecare pagina se verifica daca exista $_SESSION sau Cookie cu date pt. autetificare, si se preia din ele.
Despre Cookie vezi lectia:
Utilizare variabile cookie .
Re: Retine, Salveaza Logare
Scris: Mie Oct 31, 2012
de alexinio3d
Nu am reusit .
Imi poti spune cu ce am gresit??
Aici ai codu de autentificare :
Cod: Selectaţi tot
<center>
<form action="./index.php" method="post">
<table>
<tr>
<td><h5><font color="#FFF">User admin:</h5></td><td align="right"><input name="useradmin" placeholder="User admin" type="text" size="30" maxlength="20" id="useradmin" class="tbox" /></td>
</tr>
<tr>
<td><h5><font color="#FFF">Parola admin:</h5></td><td align="right"><input name="passadmin" placeholder="Parola de admin" type="password" size="30" maxlength="20" id="passadmin" class="tbox" /></td>
</tr>
<tr>
<td align="center" colspan="2"><br><input name="submit" type="submit" value="Autentificare" class="btn btn-primary" /></td>
</tr>
</table>
</form></center>
Aici codu din pagina unde verifica parola si userul
Cod: Selectaţi tot
<?php
//Conectare MySQL-----
require ('../config.php');
//--------------------
// Variabile
session_start();
if(!isset($_SESSION['useradmin']))
$_SESSION['useradmin'] = $_POST['useradmin'];
if(!isset($_SESSION['passadmin']))
$_SESSION['passadmin'] = $_POST['passadmin'];
if(!isset($_POST['useradmin'])){
$useradmin = "????";
} else {
$useradmin = $_POST['useradmin'];
}
if(!isset($_POST['passadmin'])){
$passadmin = "????";
} else {
$passadmin = $_POST['passadmin'];
}
// -------------------
// Verificam daca userul exista in DB !
$verificare_useradmin = "SELECT useradmin FROM user_admin WHERE useradmin = '$useradmin' AND passadmin = '$passadmin'";
$result_useradmin = mysql_query($verificare_useradmin);
if( mysql_num_rows($result_useradmin) == 0 ) { // Verificare useradmin
//Daca nu se potrivesc datele atunci urmatoarea linie il va atentiona ca datele nu-s bune
echo "<center><div class='alert alert-block'><h4>Warning!</h4>Userul sau parola sunt incorecte !<br /><br />Intoarcete la pagina de <a href='./admin.php'>conectare</a></div></center>";
}
//Daca datele sunt bune atunci va intra in panou
else {
?>
<form action="./update.php" method="post">
<table class="table table-hover">
<tr class='info'><td class='echipa'>
<select name="echipa" id="echipa">
<?php
$muta_la_echipa=@mysql_query("SELECT * FROM `clasament_echipa` ORDER by `echipa`");
while($rand2=@mysql_fetch_array($muta_la_echipa))
{
$echipa = $rand2['echipa'];
print("<option value='$echipa' selected='selected'>$echipa</option>");
}
?>
</select></td>
<td class='meciuri'><center><font color="#FF0000"><b>M : </b></font><input name='meciuri' type='text' size='30' maxlength='3' style='width:20px' id='meciuri' class='tbox' /></center></td>
<td class='victori'><center><font color="#FF0000"><b>V : </b></font><input name='victori' type='text' size='30' maxlength='3' style='width:20px' id='victori' class='tbox' /></center></td>
<td class='egaluri'><center><font color="#FF0000"><b>E : </b></font><input name='egaluri' type='text' size='30' maxlength='3' style='width:20px' id='egaluri' class='tbox' /></center></td>
<td class='infrangeri'><center><font color="#FF0000"><b>I : </b></font><input name='infrangeri' type='text' size='30' maxlength='3' style='width:20px' id='infrangeri' class='tbox' /></center></td>
<td class='goluri_date'><center><font color="#FF0000"><b>GD : </b></font><input name='goluri_date' type='text' size='30' maxlength='3' style='width:20px' id='goluri_date' class='tbox' /></center></td>
<td class='goluri_luate'><center><font color="#FF0000"><b>GP : </b></font><input name='goluri_luate' type='text' size='30' maxlength='3' style='width:20px' id='goluri_luate' class='tbox' /></center></td>
<td class='golaveraj'><center><font color="#FF0000"><b>G : </b></font><input name='golaveraj' type='text' size='30' maxlength='3' style='width:20px' id='golaveraj' class='tbox' /></center></td>
<td class='puncte'><center><font color="#FF0000"><b>Pct. : </b></font><input name='puncte' type='text' size='30' maxlength='3' style='width:20px' id='puncte' class='tbox' /></center></td></tr>
</table>
<center><input name="submit" type="submit" value="Update" class="btn btn-primary" /></center>
</form>
<?php
}
?>
Retine, Salveaza Logare
Scris: Mie Oct 31, 2012
de MarPlo
Nu stiu ce e gresit. Incearca cu session_start(); inainte de includere fisier ( require() ).
Ca sa fie afisate toate eventualele mesaje de eroare, foloseste asa la inceputul scriptului:
Cod: Selectaţi tot
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
session_start();
// restul codului php ...
In rest, depaneaza scriptul ca sa vezi unde e problema; adica sa vezi ce date primeste /are in session, cu:
Ce date vin de la formular, cu:
Ce contine comanda SQL:
- Si tot asa, treptat, de la inceputul scriptului, vezi ce date primeste si ce contin variabilele utilizate.
Retine, Salveaza Logare
Scris: Vin Noi 02, 2012
de archemorus
Aici ai codul verificat de mine(ma refer la autentificare):
Cod: Selectaţi tot
<?php
session_start();
//Conectare MySQL-----
require ('../config.php');
//--------------------
// Variabile
if(!isset($_SESSION['useradmin']))
$_SESSION['useradmin'] = $_POST['useradmin'];
if(!isset($_SESSION['passadmin']))
$_SESSION['passadmin'] = $_POST['passadmin'];
if(!isset($_POST['useradmin'])){
$useradmin = "????";
} else {
$useradmin = $_POST['useradmin'];
}
if(!isset($_POST['passadmin'])){
$passadmin = "????";
} else {
$passadmin = $_POST['passadmin'];
}
// -------------------
// Verificam daca userul exista in DB !
$verificare_useradmin = "SELECT * FROM membri WHERE nume = '$useradmin' AND parola = '$passadmin'";
$result_useradmin = mysql_query($verificare_useradmin);
if( mysql_num_rows($result_useradmin) == 0 ) { // Verificare useradmin
//Daca nu se potrivesc datele atunci urmatoarea linie il va atentiona ca datele nu-s bune
echo "<center><div class='alert alert-block'><h4>Warning!</h4>Userul sau parola sunt incorecte !<br /><br />Intoarce-te la pagina de <a href='./admin.php'>conectare</a></div></center>";
}
//Daca datele sunt bune atunci va intra in panou
else {
//Completeaza CODUL ---pana aici totul functioneaza --
echo "Ok.Autentificare reusita!";
}
?>
Atentie!Daca introduci parola in baza de date folosind MD5 ,cand faci verificarea trebuie sa asemenea sa convertesti parola in MD5 inainte de a face verificarea.Trebuie sa schimbi :
Cu:
Doar daca ai parola in baza de date folosind MD5.
In codul formularului nu este nimic de schimbat.
Daca nu merge,verifica structura directoarelor.Banuiesc ca structura ta e ceva de genul:
root-->config.php
root-->admin-->fisierul cu formularul
root-->admin-->scriptul care verifica datele
Bafta!
Daca nu iti merge,verifica si codul din else-ul care se executa daca autentificarea a reusit.Codul de mai sus e verificat.
Daca vrei sa ai o autentificare fara probleme si cu un nivel de securitate mai ridicat,trebuie sa mai citesti cateva tutoriale despre sesiuni si autentificarea utilizatorilor,tutorialele indicate de MarPlo sunt perfecte. Daca analizezi putin, inca din primele linii ale scriptului de verificare a datelor introduse observi ca nu verifici formatul datelor introduse,atribui variabilei $_SESSION o valoare din formular neverificata,nu stii nici macar daca are o valoare...si tot asa.
Re: Retine, Salveaza Logare
Scris: Vin Noi 02, 2012
de alexinio3d
Mersi archemorus pentru ajutor, dar mai am o intrebare
.
Dupa cum cred ca ati observat eu lucrez la un asa numit panou de administrare
, dar nustiu cum sa fac sa imi fie parolate fisierele ( adica daca de exemplu am doua fisiere update_clasament.php si creare_accese_Admin.php ) si sa nui lase pe useri sa le vada pana cand nu se autentifica, dar dupa autentificare sa ii lase in am2 fisiere sa le acceseze fara sa se mai autentifice de fiecare data .
Sper ca ati inteles ce vreau sa intreb
.
Astept o parere sau un tutorial
.
Si mersi anticipat pentru ajutorul acordat .
Re: Retine, Salveaza Logare
Scris: Vin Noi 02, 2012
de archemorus
Ideea este urmatoarea.Tu ai un panou de administrare al site-ului.Doar administratorii au acces la acest panou.Un administrator esti tu,si daca vrei sa mai bagi pe cineva de incredere,e ok.Accesarea acestui panou se face pe baza de numeutilizator/parola administrator.Din codul de mai sus vad ca folosesti sesiuni.Administratorul acceseaza contul si are acces la acele fisiere doar pe durata sesiunii.
Cand zici "user" te referi la un utilizator obisnuit care isi face cont,sau la un administrator?
Nu inteleg prea bine la ce te referi,dar o varianta ar fi sa acorzi niste privilegii membrilor.In tabela cu useri,adaugi un camp numit "privilegii" si il pui cu valoarea "0" pentru un utilizator obisnuit si "1" pentru un administrator.Cand cineva se autentifica,verifici valoarea campului "privilegii",daca e "1" afisezi legaturile catre script-urile respective,daca e 0 nu.
Re: Retine, Salveaza Logare
Scris: Vin Noi 02, 2012
de alexinio3d
archemorus imi poti da add la id de messenger alexinio3d ca sati arat mai in detaliat despre ce ii vorba
??
Mersi
Retine, Salveaza Logare
Scris: Sâm Noi 03, 2012
de MarPlo
Daca vrei ca accesul sa fie facut in functie de rangul utilizatorului, asa cum a spus "archemorus", se adauga o coloana pentru "rang" in tabelul MySQL, cu valoaere 1 pt Admin, in rest 0. Apoi, cand faci Select, se adauga si rang-ul in Sesiune, si se verifica sesiunea cu acel rang.
De exemplu, asa:
Cod: Selectaţi tot
if(isset($_SESSION['rang']) && $_SESSION['rang'] == 1) {
// executa /afiseaza cod pt Admin
}
else {
// afiseaza continut pt ne-Admin
}
- Script-ul de aici:
Script Utilizatori - Inregistrare si Autentificare / Logare are si asa ceva, cu rang.
Retine, Salveaza Logare
Scris: Sâm Noi 03, 2012
de alexinio3d
Dar faza ii ca eu am separat un tabel cu conturile adminilor. Atunci daca il am separat sa pun asa ?
Cod: Selectaţi tot
if(isset($_SESSION['useradmin']) && $_SESSION['useradmin'] == 1) {
// executa /afiseaza cod pt Admin
}
else {
// afiseaza continut pt ne-Admin
}
Retine, Salveaza Logare
Scris: Sâm Noi 03, 2012
de MarPlo
Daca ai conturile pt Admin intr-un tabel separat, trebuie sa faci Select si la acel tabel (cu datele de logare) si adaugi in $_SESSION['useradmin'] daca interogarea SQL Select returneaza rand din tabel.
Apoi, in acele pagini merge codul de sus, cu verificare (==) a valorii pe care o ai adaugata in coloana "useradmin" din tabel.
Re: Retine, Salveaza Logare
Scris: Sâm Noi 03, 2012
de alexinio3d
Am incercat sa fac cum ai zis tu dar nustiu de ce numi merge
Imi poti spune ce am gresit in codu urmator
daca te rog
Cod: Selectaţi tot
<?php
$admin = mysql_query("SELECT * FROM user_admin");
while ( $adminuser = mysql_fetch_array($admin))
{
$useradmin = $adminuser['useradmin'];
$passadmin = $adminuser['passadmin'];
}
$_SESSION['useradmin'] = $useradmin;
if(isset($_SESSION['useradmin']) && $_SESSION['useradmin'] == 1) {
// executa /afiseaza cod pt Admin
?>
<table class="table table-hover">
<th align="center"><font color="#FF0000"><center>Echipa</center></font></th>
<th align="center"><font color="#FF0000"><center>Nume</center></font></th>
<th align="center"><font color="#FF0000"><center>Email</center></font></th>
<?php
$info = mysql_query("SELECT * FROM clasament_echipa ORDER by `date` ASC, `ora` ASC");
$loc = 1;
while($row = mysql_fetch_array($info))
{
$echipa = $row['echipa'];
$username = $row['username'];
$email = $row['email'];
print( " <tr class='info'>
<td class='rank'><center>$echipa</center></td>
<td class='echipa'><center>$username</center></td>
<td class='meciuri'><center>$email</center></td></tr>" );
}
?>
</table>
<?php
}
else {
// afiseaza continut pt ne-Admin
echo "<center><div class='alert alert-block'><h4>Warning!</h4>Ne pare rau dar nu ai acces pe acest fisier</div></center>";
}
?>