![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 2.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
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'> <font color='#849FBB'>Uzytkownik:</font></td> <td width='23%' bgcolor='#282F3E' style='border-bottom: 1px solid #000000; border-top: 1px solid #000000'> 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'> </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] |
|
|
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
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ć. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 2.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() Czyli sprawdza czy zmienna sesyjna istnieje.....czy $_SESSION takze rejestruje zmienne ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 660 Pomógł: 0 Dołączył: 28.08.2002 Skąd: Starachowice Ostrzeżenie: (0%) ![]() ![]() |
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(). |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 117 Pomógł: 0 Dołączył: 2.05.2003 Ostrzeżenie: (0%) ![]() ![]() |
Hmm.....chyba wlasnie znalezlismy problem zaraz sprawdze i dam znac co i jak.....
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.06.2025 - 02:03 |