special
(special)
30 Listopad 2010 19:25
#1
Witam!
Mógłby mi ktoś poradzić czemu owy skrypt Księgi Gości, w którym jest niewielki panel administratora nie pamięta hasła administratora. Gdy wprowadzam hasło przy logowaniu, przechodzi dalej - pokazują się różne opcje dla admina, lecz gdy chcę kliknąć na którą zaraz wracam do strony przed logowaniem, czyli tracę owe opcje. Nie pamięta sesji…
Skrypt działał poprawnie na PHP 4.4 lecz po aktualizacji na serwerze na wersję 5, już nie chce…
Proszę o pomoc
ODPOWIEDZIALNE ZA TO LINIE W KODZIE:
$gb_psswd="password";
if($_POST['action'] == "logon"){
if ($_POST['password'] == $gb_psswd){
session_register("psswd");
$psswd = $_POST['password'];
}
else {$_GET['$msg_txt']=$lgerr[5]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_GET['msgdelete'] || $_POST['msgdelete'] == "0" ){
if ($_POST['$psswd']==$gb_psswd){
$data = file($gb_data);
rsort ($data);
unset($data[$_POST['msgdelete']]);
$fp = fopen($gb_data,"w");
foreach ($data as $row){fputs($fp, $row);}
fclose($fp);
}
else{$_GET['$msg_txt']=$lgerr[6]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_GET['msgedit'] || $_POST['msgedit'] == "0" ){
if ($_POST['$psswd']==$gb_psswd){
$_GET['$id']="edit";
}
else{$_GET['$msg_txt']=$lgerr[7]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_POST['msgreplace']){
if ($_POST['$psswd']==$gb_psswd){
$data = file($gb_data);
rsort ($data);
$message = flt_tags ($message,$gb_flthtml);
$comment = flt_tags ($comment,0);
$data[$num] = "".$_POST['index']."|".$_POST['day']."|".$_POST['time']."|".$_POST['ip']."|".$_POST['browser']."|".$_POST['name']."|".$_POST['email']."|".$_POST['page']."|".$_POST['message']."|".$_POST['comment']."|0\r\n";
$fp = fopen($gb_data,"w");
foreach ($data as $row){fputs($fp, $row);}
fclose($fp);
}
else{$_GET['$msg_txt']=$lgerr[6]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
Dziękuje za daną pomoc. Pozdrawiam!
adpawl
(adpawl)
30 Listopad 2010 19:33
#2
A nie zgubiłeś czasem session_start(); ?
GioWDS
(GioWDS)
30 Listopad 2010 19:50
#4
A gdzie masz tutaj jakieś użycie $_SESSION?
special
(special)
30 Listopad 2010 19:57
#5
poczyniłem takie coś i zamieniłem session_register () na $_SESSION.
if($_POST['action'] == "logon"){
if ($_POST['password'] == $gb_psswd){
$_SESSION['psswd'];
$psswd = $_POST['password'];
}
else {echo $_GET['$msg_txt']=$lgerr[5]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_GET['msgdelete'] || $_GET['msgdelete'] == "0" ){
if ($_POST['psswd']==$gb_psswd){
$data = file($gb_data);
rsort ($data);
unset($data[$_POST['msgdelete']]);
$fp = fopen($gb_data,"w");
foreach ($data as $row){fputs($fp, $row);}
fclose($fp);
}
else {echo $_GET['$msg_txt']=$lgerr[6]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_GET['msgedit'] || $_GET['msgedit'] == "0" ){
if ($_POST['psswd']==$gb_psswd){
$_GET['$id']="edit";
}
else {echo $_GET['$msg_txt']=$lgerr[7]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
}
if($_POST['msgreplace']){
if ($_POST['$psswd']==$gb_psswd){
$data = file($gb_data);
rsort ($data);
$message = flt_tags ($message,$gb_flthtml);
$comment = flt_tags ($comment,0);
$data[$num] = "".$_POST['index']."|".$_POST['day']."|".$_POST['time']."|".$_POST['ip']."|".$_POST['browser']."|".$_POST['name']."|".$_POST['email']."|".$_POST['page']."|".$_POST['message']."|".$_POST['comment']."|0\r\n";
$fp = fopen($gb_data,"w");
foreach ($data as $row){fputs($fp, $row);}
fclose($fp);
}
else {echo $_GET['$msg_txt']=$lgerr[6]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
nadal traci hasło i wszystko znika…
session_start(); jest na samej górze w index.php
absens
(Zbyszekborkowski)
30 Listopad 2010 20:51
#6
W 2 wierszu (pominąłem pierwszy wiersz - pusty) tworzysz zmienną sesyjną psswd ($_SESSION[‘psswd’] ), jest ona pusta i nic z nią później się nie dzieje. Czyli po prostu nie sprawdzasz, czy jesteś zalogowany.
Dalej sprawdzasz, czy zmienna $_POST[psswd’] jest Twoim tajnym hasłem, ale żeby to działało musiałbyś za każdym razem wysyłać hasło przez formularz (wiersze 10, 22, 29). I to chyba w tych wierszach powinieneś sprawdzać warunek ze zmienną sesyjną.
Połącz trzeci i czwarty wiersz, tzn. $_SESSION[‘psswd’] = $_POST[‘password’] .
special
(special)
30 Listopad 2010 21:13
#7
jesli chodzi o taki zapis, jesli dobrze kojarze to teraz w ogole sie nie loguje, nawet na pierwsza strone ;(
tak zrobilem - sam poczatek skryptu
0
1 if($_POST['action'] == "logon"){
2 if ($_POST['password'] == $gb_psswd){
3 $_SESSION['psswd'] = $_POST['password'];
4 }
5 else {echo $_GET['$msg_txt']=$lgerr[5]; $_GET['$msg_cap']=$lgerr[0]; $_GET['$id']="message";}
6 }
nadal nic…