Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja - nadpisywanie
Forum PHP.pl > Forum > PHP
Robert
Witam !!
Moglby mi ktos wytlumaczyc jak skutecznie zlikwidowac nadpisywanie sie zmiennych w sesji....?
Wiem ze musze uzywac $_SESSION lecz jej mam uzywac w kazdym miejscu gdzie znajduje sie zmienna np z logowania ktora zapisalem??
Fragment kodu
[php:1:a509eaf872]if(isset($log) && isset($pass)) {
if($log == $_POST['logg']) {
if($pass == $_POST['passw']) {
session_start();
session_register('log');
session_register('pass');[/php:1:a509eaf872]
Wiec w tym przypadku rejestruje dwie zmienne $log i $pass. I czy lepiej jest zapisywac zmienne z formularza logujacego tj $_POST['logg'], $_POST['passw'], czy zmienne pochodzace z pliku tj $log i $pass??
Czy jak?? Moze sa jakies skuteczne sposoby. Ja walcze juz z tymi sesjami dlugo i wciaz nie moge sobie poradzic....wciaz zmienna jest nadpisywana i users zostaje przlogowany.....
To jest kod w ktorym zmienna zostaje nadpisana i zostaje przelogowany[php:1:a509eaf872]<?
$Kat='includes/users';
$OpenKat=opendir($Kat);
$t=array();
$ok=0;
while(($pliki=readdir($OpenKat))!=false):
if($pliki!="."&&$pliki!=".."):
$t[]=$pliki;
$ok++;
$lb=$ok-1;
endif;
endwhile;
echo 'Aktualnie zarejestrowanych jest <b>'.$lb.'</b> urzytkownikow.<br><br>';
?>
<?php
if(isset($action)){
if($action == "edit"){
if($act == "level"){
$dane = file("includes/users/users.dat");
include("includes/users/".trim($dane[$id]).".dat");
$content = '<?
$log = "'.$_SESSION["log"].'";
$pass = "'.$_SESSION["pass"].'";
$mail = "'.$mail.'";
$pytanie = "'.$pytanie.'";
$odpowiedz = "'.$odpowiedz.'";
$www = "'.$www.'";
$gadu = "'.$gadu.'";
$lev = "'.$level.'";
$dolaczyl = "'.$dolaczyl.'";
$ip = "'.$ip.'";
$host = "'.$host.'";
?>';
$file = fopen("includes/users/".trim($dane[$id]).".dat", "w");
fwrite($file, $content);
echo ("Poziom usera zostal pomyslnie zmieniony");
echo ("<html><head><meta http-equiv='refresh' content='2;URL="index.php?a=uzytkownicy"'></head></html>");
} else {
$dane = file("includes/users/users.dat");
include("includes/users/".trim($dane[$id]).".dat");
$options = "";
if($lev == "1")
{
$options .= "<option value='1' selected>1 Membern";
} else {
$options .= "<option value='1'>1 Membern";
}
if($lev == "2")
{
$options .= "<option value='2' selected>2 Moderatorn";
} else {
$options .= "<option value='2'>2 Moderatorn";
}
if($lev == "3")
{
$options .= "<option value='3' selected>3 Adminn";
} else {
$options .= "<option value='3'>3 Adminn";
}
echo ("<form method=post action=index.php?a=uzytkownicy&action=edit&act=level&id=$id><select name=level>$options</select> <input type=submit value=Ok></form>");
}
}
if($action == "usun"){
$dane = file("includes/users/users.dat");
unlink("includes/users/".trim($dane[$id]).".dat");
unset($dane[$id--]);
$plik=fopen('includes/users/users.dat','w');
fwrite($plik,join('',$dane));
fclose($plik);
echo ("Uzytkownik zostal usuniety usuniety");
echo ("<html><head><meta http-equiv='refresh' content='2;URL="index.php?a=uzytkownicy"'></head></html>");
}
}else{
$dane=file("includes/users/users.dat");
$c = count($dane);
echo ("<table width='100%' cellspacing='1' cellpadding='2' bgcolor='#384A5D'>
<tr>
<td width='30%' colspan='2' bgcolor='#282F3E' style='border-bottom: 1px solid #000000; border-top: 1px solid #000000'>&nbsp;<font color='#849FBB'>Uzytkownik:</font></td>
<td width='23%' bgcolor='#282F3E' style='border-bottom: 1px solid #000000; border-top: 1px solid #000000'>&nbsp;Mail</td>
<td width='7%' bgcolor='#282F3E' align='center' style='border-bottom: 1px solid #000000; border-top: 1px solid #000000'>Level</td>
<td width='20%' colspan='3' bgcolor='#282F3E' style='border-bottom: 1px solid #000000; border-top: 1px solid #000000'>&nbsp;</td>
</tr>");
if($dane[0] == ""){
echo ("<tr><td colspan='7' align='center' bgcolor='#2B3C4E'>W bazie nie ma zadnego zarejestrowanego usera</td></tr>");
}
else
{
for($q=0; $q<$c; $q++)
{
include("includes/users/".trim($dane[$q]).".dat");
echo ("<tr>
<td width='2%' bgcolor='#2B3C4E'><input type=hidden name=check value=$q class=cbox>".$q."</td>
<td width='28%'bgcolor='#2B3C4E' >".$_SESSION["log"]."</td>
<td width='23%' bgcolor='#2B3C4E' align='center'>");
if($mail == ""){
echo "<font color='#00000'>Brak maila</font>";
} else {
echo "<a href='mailto:$mail'>".$mail."</a></td>";
}
echo ("<td width='7%' bgcolor='#2B3C4E' align='center'><font color='#777777'>".$lev."</font></td>
<td width='7%' bgcolor='#2B3C4E' align='center'><a href='index.php?page=register'>Dodaj</a></td>
<td width='7%' bgcolor='#2B3C4E' align='center'><a href='index.php?a=uzytkownicy&action=edit&id=$q&l=$log&p=$lev'>Edytuj</a></td>
<td width='6%' bgcolor='#2B3C4E' align='center'><a href='index.php?a=uzytkownicy&action=usun&id=$q'>Usun</a></td>
</tr>");
}
}
echo ("</table>");
}
?>[/php:1:a509eaf872]
BzikOS
Całego kodu nie czytałem, ale w tym na początku już rzuciły mi się w oczy błedy. Jeśli odwołujesz się do zmiennych sesyjnych poprzez $_SESSION to nie ma potrzeby ich rejestrować za pomocą session_register, czyli:

[php:1:eb2afdbc64]<?php
session_start();

if(poprawne dane logowania) {
$_SESSION['log'] = $_POST['log'];
}
?>[/php:1:eb2afdbc64]

Nie za bardzo rozumiem co ten kawałek kodu na początku Twojego postu ma robić.
Robert
W tym kodzie jeszcze jest formularz lecz go nie przedstawilem.....zmienna $_POST["pass"] pochodzi z niego.....wtedy skrypt sprawdza czy zmienna $pass z pliku jest taka sama jak w formularzu....jezeli tak to potwierdza zalogowanie sie......

UPDATE
$_SESSION nie dziala jak $session_is_registered questionmark.gif
Czyli sprawdza czy zmienna sesyjna istnieje.....czy $_SESSION takze rejestruje zmienne questionmark.gif
BzikOS
Cytat
Notatka: Jeśli użyta została tablica $_SESSION (lub $HTTP_SESSION_VARS dla php 4.0.6 lub starszych), do sprawdzenia czy zmienna została zarejestrowana w sesji należy użyć funkcji isset() na tablicy $_SESSION.

Przy użyciu $_SESSION (lub $HTTP_SESSION_VARS), nie należy używać session_register(), session_is_registered() i session_unregister().
Robert
Hmm.....chyba wlasnie znalezlismy problem zaraz sprawdze i dam znac co i jak.....
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.