 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Vin Iun 06, 2008 11:01 pm Titlul subiectului: login cu probleme |
|
|
Am un login cu probleme care nu permite logarea pe un server, dar pe altu merge.
Daca fac logare la mine pe server http://www.danielsen82.com/brandmagazine.ro/?p=admin (admin / zapper) va merge. De pe serverul celor carora e siteul nu ma lasa: http://www.brandmagazine.ro/?p=admin
E posibil sa fie din cauza safe_mode activat sau nu?
Uitati putin aici ce ar putea sa-i lipseasca:
http://www.brandmagazine.ro/info.php
Cine se ocupa de serverul lor, mi-a zis ca e mai vechi, nu are instalata interfata mysql, nu pot urca cu ftp decat de pe ip-urile permise de el, n-are phpmyadmin, au un server... numai ei stiu. Ideea e ca nu accepta cookie-uri, ori validarea, asa cum am facut-o, nu-i corect facuta. Pe site mai trebuia sa apara un meniu principal in momentul cand e logat si... nu apare.
Am un fisier pages.php in care exista bucata asta de cod:
Cod: if (!isset($_GET['p'])) $_GET['p'] = '';
switch ($_GET['p']) {
...
case 'admin':
include("admin/login.php");
break;
case 'administrare':
// daca administratorul nu este autentificat,
// afiseaza formularul de login
if ($_SESSION['logat'] != 'Da') {
echo '<meta http-equiv=refresh content="5; url=http://www. ... ?p=admin">';
echo 'Sesiune expirata sau nu ati introdus...';
} else { // altfel, afiseaza panoul de administrare
include("admin/admin.php");
}
break;
...
validarea din login.php (case 'admin') arata asa:
Cod: switch ($_GET['actiune']) {
default:
case 'login':
if ($_SESSION['logat'] != 'Da') {
// afiseaza formularul de login
} else {
echo '<meta http-equiv=refresh content="0; url='.SITE.'?p=administrare">';
}
break;
case 'validare':
$_SESSION['utilizator'] = $_POST['utilizator'];
if (($_POST['utilizator'] == '') || ($_POST['parola'] == '')) {
echo 'Completeaza datele de autentificare';
} else {
$interogare = "SELECT * FROM utilizatori WHERE utilizator='".htmlentities($_POST['utilizator'])."' AND parola='".md5($_POST['parola'])."'";
$rezultat = mysql_query($interogare);
if (mysql_num_rows($rezultat) == 1) {
while ($rand = mysql_fetch_array($rezultat)) {
$_SESSION['logat'] = 'Da';
echo '<meta http-equiv=refresh content="0; url='.SITE.'?p=administrare">';
}
} else {
echo 'Datele introduse sunt incorecte';
}
}
break;
...
Eu am mai folosit codul si in alte site-uri si n-am avut probleme de genul asta. Posibil sa fi folosit ceva care sa nu fie fie acceptat de versiunile mai vechi de php? Doar pe brandmagazine.ro nu merge. Ce ar trebui facut? |
|
| Sus |
|
gabysolomon
Data înscrierii: 09/Apr/2006
Mesaje: 743
Locație: Bacau
|
| Trimis: Sâm Iun 07, 2008 9:03 am Titlul subiectului: |
|
|
fa niste teste .. vezi ce si cum nu merge :
- se trimit variabilele din formularul de login corect
- sunt rezultate la interogarea SQL
- se salveaza in sesiune login-ul |
|
| Sus |
|
DaRk`SouL
Data înscrierii: 19/Noi/2007
Mesaje: 55
Locație: Bucharest, RO
|
| Trimis: Sâm Iun 07, 2008 9:35 am Titlul subiectului: |
|
|
mie mi-a dat cateva errori prima data ...
dupa care s-a logat iar cand am dat logout si iar login ...
imi da utilizatorul si parola in md5:
" admin16a7af0e14037b567d7782c4ef1bdeda "
si apare mereu string(2) "Da" ... asta pe site-ul tau
pe celalalt apare direct "Nu"
Nu inteleg care-i faza, dar fa niste teste! e o erroare pe undeva prin script sau chiar in mysql ... si ti-as mai recomanda functia header() in loc de ehco "<meta..." ... parerea mea! |
|
| Sus |
|
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Sâm Iun 07, 2008 10:14 am Titlul subiectului: |
|
|
Deci sa le zic pe rand:
Am config.php care-i inclus ca primul lucru in index.php din radacina, si in el (config asta) am datele de la baza de date, dar inaintre de asta am
session_start();
set_time_limit(0);
error_reporting (E_ALL & ~E_NOTICE);
if (!isset($_SESSION['logat'])) $_SESSION['logat'] = 'Nu';
de la bun inceput $_SESSION['logat'] = 'Nu'; ... asta e clar.
in pages.php
case 'admin':
include("admin/login.php");
fisier in care...
avem case 'login' care-i si default ... in care, daca $_SESSION['logat'] != 'Da', atunci afiseaza formularul de login, altfel afiseaza panoul de administrare, corect?
In momentul cand se introduc utilizatorul si parola, initial se da egalitatea $_SESSION['utilizator'] = $_POST['utilizator'], iar daca campurile nu-s completate, afiseaza 'Completeaza datele de autentificare', altfel se face interogarea in care, daca se gaseste cel putin o inregistrare cu datele introduse, atunci $_SESSION['logat'] = 'Da' si directioneaza catre panoul de administrare, altfel daca datele nu-s corecte, echo 'Datele introduse sunt incorecte'.
In cazul cand directioneaza spre panoul de administrare... case 'administrare' --- se mai pune o conditie if ($_SESSION['logat'] != 'Da'), atunci afiseaza mesajul: Sesiune expirata sau nu ati introdus..., altfel, numai daca $_SESSION['logat'] = 'Da', atunci afiseaza pagina de administrare. Daca-i scot aceasta ultima conditie, intra intr-adevar pe pagina de administrare, dar asta nu inseamna ca $_SESSION['logat'] == 'Da', insa e posibil sa fie $_SESSION['logat'] = 'Da', daca pun cu operator '=', atunci ii da, dar mai am un buton in meniul care-i pus cu conditia ca if ($_SESSION['logat'] == 'Da') ... numai atunci sa afiseze. Daca as schimba cu un singur =, ramane afisat tot timpul, indiferent ca-i logat sau nu.
Concluzia: serverul nu accepta sesiuni, ori nu stiu ce are.
Am dat cu var_dump($_SESSION['logat']); si rezulta string(2) "Nu"
Scriptul e corect facut, doar am incercat pe 2 localhost-uri, si pe un alt server web (danielsen82.com/brandmagazine.ro), doar hosting-ul brandmagazine.ro face figuri. Ar trebui setat ceva pe server sau la ce anume e problema? |
|
| Sus |
|
DaRk`SouL
Data înscrierii: 19/Noi/2007
Mesaje: 55
Locație: Bucharest, RO
|
| Trimis: Dum Iun 08, 2008 1:14 am Titlul subiectului: |
|
|
am facut o comparatie intre serverul meu ... (defapt, o instalare default a 'wamp'-ului) si serverul dat de tine!
Rezultatul este asta:
1. tu ai parola='".md5($_POST['parola'])."'"; ... iar in phpinfo(); la srv. tau nu am vazut ca functia hash sa fie activata!
la mine este Cod:
hash support
enabled
Hashing Engines
md2 md4 md5 sha1 sha256 sha384 sha512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru gost adler32 crc32 crc32b haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5
2. cu toate ca motoarele de cautare catalogheaza "session.use_trans_sid" ca fiind "low" ... eu zic ca e bine sa fie on
La mine este: Cod: session.use_trans_sid 0 0
la srv acela este off off
oricum faza cu hash-ul iti cam trebuie, in conditiile in care tu ai pus parola='".md5($_POST['parola'])."'";
tu practic pe srv-ul acela nu ai suport pentru md5, md4.... etc... cryptare
in rest pare ... ok sa zic! Bafta! |
|
| Sus |
|
danielsen
Data înscrierii: 14/Feb/2004
Mesaje: 104
Locație: Cluj-Napoca
|
| Trimis: Dum Iun 08, 2008 8:05 am Titlul subiectului: |
|
|
| Da, deci serverul respectiv nu are interfata mysql, si depindeam de administratorul de server si pana nu i-a venit cheful sa introduca toate tabelele (inclusiv tabelul `utilizatori` de la mine), nu avea cum sa mearga. Si culmea sa mearga cand parola ii cu md5... dar s-a rezolvat si merge! Thx |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|