Autor | Zpráva | ||
---|---|---|---|
wikinka Profil |
Ahojte,
chcela by som poprosit o pomoc, nefunguje mi session pri login. Presmerovanie na jednotlive podstranky je OK, ale nejde ochrana, pokial uzivatel nie je prihlaseny, nemoze vstupit na "success page" Este len zacinam s PHP, takze sa vopred ospravedlnujem, ak tam mam nejake brutalne chyby. Vopred vsetkym velmi pekne dakujem za ochotu:-)) Login kontrola if ($_POST['submit']) { $priezvisko = $_POST['priezvisko']; $heslo = $_POST['heslo']; $priezvisko = stripslashes($priezvisko); $heslo = stripslashes($heslo); $priezvisko = mysql_real_escape_string($priezvisko); $heslo = mysql_real_escape_string($heslo); $link=mysql_connect("localhost", "root",""); $db=mysql_select_db("doctori", $link); $result=mysql_query("select * from $tbl where priezvisko='$priezvisko' and heslo='$heslo' limit 1;"); $result1=mysql_query("select * from $tbl1 where priezvisko='$priezvisko' and heslo='$heslo' limit 1;"); $result2=mysql_query("select * from $tbl2 where priezvisko='$priezvisko' and heslo='$heslo' limit 1;"); if(mysql_num_rows($result) == 1) { $row = mysql_fetch_assoc($result); session_register('priezvisko'); header("location: " . $row['firma'] . ".php"); } else if (mysql_num_rows($result1) == 1) { $row = mysql_fetch_assoc($result1); session_register('priezvisko'); header("location: " . $row['firma'] . ".php"); } else if (mysql_num_rows($result2) == 1) { $row = mysql_fetch_assoc($result2); session_register('priezvisko'); header("location: " . $row['firma'] . ".php"); } else { header("location:login.php");} } else { header("location:login.php");} ?> success page <?php session_start(); if(!session_is_registered('priezvisko')){ header("location:login.php");} ?> Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
Tori Profil |
#2 · Zasláno: 23. 8. 2011, 18:12:28 · Upravil/a: Tori
session_register funguje jen když je povolené nastavení register_globals. (Pokud nevíte, zjistíte to třeba takto:
$set = ini_get('register_globals'); echo 'register_globals je '.($set ? 'zapnute' : 'vypnute'); PS: Když ten blok kódu označíte jako kód (tlačítko [< >] ) , bude přehlednější. |
||
wikinka Profil |
#3 · Zasláno: 23. 8. 2011, 18:26:05
dakujem Vam Tori, pomohla by ste mi s tym prepisom na $_SESSION, skusala som uz aj tuto alternativu, ale ani toto nefungovalo. Bojujem s tym uz cely den a nic :-(
|
||
wikinka Profil |
Tori:
skusila som to prepisat za $_SESSION, ale niekde robim chybu.... v Login kontrola if(mysql_num_rows($result) == 1) { $row = mysql_fetch_assoc($result); $_SESSION['prihlaseny'] = $priezvisko; header("location: " . $row['firma'] . ".php"); } v success page <?php session_start(); if($_SESSION['prihlaseny'] == ""){ header("location:index.php");} ?> Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na
![]() |
||
Tori Profil |
#5 · Zasláno: 23. 8. 2011, 18:46:45
wikinka:
„skusala som uz aj tuto alternativu, ale ani toto nefungovalo“ A samotné ověření uživatele funguje? Přesměruje se na tu $row[firma].php (=chyba je v použití session), nebo ne (=chyba je v ověřování uživatelů)? |
||
wikinka Profil |
#6 · Zasláno: 23. 8. 2011, 18:52:09
Tori
v overovani uzivatelov by nemala byt chyba, skusala som to bez pouzitia session a fungovalo mi pekne presmerovanie na rozne podstranky, ktorych nazov som si oznacila do pola 'firma' v databaze. Rovnako som potom oyznacila aj success page ako 'firma'.php. Toto fici. Len ked som skusala hore do stavoveho riadku napisat 'firma'.php, tak ma v pohode pustilo na tuto stranku bez loginu :-( |
||
wikinka Profil |
#7 · Zasláno: 23. 8. 2011, 18:53:32
Tori:
A este testovala som aj zadat spatne meno alebo heslo, vtedy som zostala pekne na stranke loginu. |
||
Tori Profil |
#8 · Zasláno: 23. 8. 2011, 19:14:04
[#4] wikinka:
Tak jak jste to přepsala to vypadá v pořádku. Nechybí session_start() na začátku login.php? Anebo by ještě mohlo být v $_SESSION[prihlasen] uložené něco z předchozích pokusů, pokud jste od té doby nezavřela prohlížeč. Nic lepšího mě teď nenapadá, čím by to mohlo být. |
||
wikinka Profil |
#9 · Zasláno: 23. 8. 2011, 19:36:37
Tori:
ano funguje to, a doplnila som session_start() na zaciatku aj loginkontrola.php a aj login.php,. Dakujem. No vyzera to tak, akoby nenacitavalo do $_SeSSION meno uzivatela, takze, ked napisem hore doriadku 'firma'.php tak ma tam v pohode pusti. Akoby som tam session ani nemala. Fakt neviem, kde mam chybu. Nemoze byt, ze si pamata stare prihlasenia, ktore som testovala a preto ma tam pusti? Alebo bude chyba v serveri? Pouzivam Wamp server 2.1e 32bit. Fakt neviem :-(( |
||
Michel Profil |
#10 · Zasláno: 24. 8. 2011, 10:43:13
wikinka:
Když si nejsem jistý, zda session běží, tak si jí zkusím vypsat a nebo použít následující: <?php session_start(); if (!session_id()) {$sid = 'NEMA!';} else {$sid = session_id();} echo 'Toto session ma id: '.$sid; ?> Pokud to id nevypíše, tak bude potřeba se podívat do nastavení serveru, (nejčastěji bývá problém, že není nastavena cesta). Pokud ho vypíše, tak bude chyba někde v kódu. |
||
peta Profil |
#11 · Zasláno: 24. 8. 2011, 11:02:44 · Upravil/a: peta
Jestli mas podezreni, ze se prenasi stare session, je mozne si ho vypsat a pripadne zrusit.
echo '<pre>'; print_r($_SESSION); echo '</pre>'; session_unset(); echo '<pre>'; print_r($_SESSION); echo '</pre>'; Aby se session prenaselo mezi strankami, tak na kazde z nich musi byt session_start(); jako prvni radek. Nad tim nezmi byt zadny html kod. (Ono to pak muze a nemusi fungovat) --- soubor.php --- <?php session_start(); --- Nad <?php je prazdny radek, to je spatne, protoze se hlavicka odesle a session je soucasti informaci hlavicky. Za <?php je prazdny radek, to ale nevadi, to je php kod. Podobnou chybu odhali povoleni zobrazovani chyb <?php @ini_set('error_reporting', E_ALL); @ini_set("display_errors", "on"); error_reporting(E_ALL); ?> Dalsi problem muze nastat, ze se session neprenaseji vubec. Nekde, mozna prohlizec, mozna server, ma zakazane cookies. A moznosti je vic. Udelal bych si jednoduchy priklad. --- soubor1.php --- <?php session_start(); $jmeno = isset($_GET['jmeno']) ? $_GET['jmeno'] : ''; if ($jmeno=='lojza') { $_SESSION['jmeno'] = $jmeno; header("location:soubor2.php"); } else { session_unset(); } ?> <a href="soubor1.php?jmeno=lojza">Prihlas Lojzu</a> --- soubor2.php --- <?php session_start(); print_r($_SESSION); ?> Kdyz kliknu v soubor1.php na odkaz Prihlas Lojzu, tak me presmeruje na soubor2 a vypise, ze je v session ulozeny lojza. Array ( [jmeno] => lojza ) Co to udela tobe? |
||
Časová prodleva: 14 let
|
0