![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 24.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od paru dni nie mogę sobie poradzić z następującym problemem: Mam link generowany przez php w źródle index.php: if(isset($user_login)) echo "<A HREF=new.php>Nowe zgłoszenie</A><BR>"; tylko wtedy, gdy użytkownik jest zalogowany. Generalnie to działa, ale raz na kilka kliknięć strona zachowuje się tak, jakby źródło było puste tzn. po kliknięciu mam białe okno przeglądarki, w polu adresu jest nadal index.php, po wybraniu opcji "Pokaż źródło" nie dzieje się kompletnie nic. Używam zmiennych sessji, łączę się z bazą MS SQL, procedurę połączenia ładuję przez include(), nie wiem, co jeszcze może mieć wpływ na takie działanie skryptu. Będę wdzięczny za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 24.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za zainteresowanie.
Ok. Spróbuję skonkretyzować problem. Generalnie za każdym razem kiedy zmieniam lokację strony (link, submit) istnieje duże prawdopodobieństwo, że ujrzę biały ekran i pozostanę na tej samej stronie. Może zapomnijmy na chwilę o linku. Pokażę to na przykładzie submita, bo jeśli problem jest w kodzie, to chyba właśnie w tym miejscu. Na początku strony mamy: Kod <?php session_start(); if (session_is_registered('logon_info')) session_unregister('logon_info'); // komunikat o błędzie ?> Dalej formularz logowanie i wyświetlanie komunikatu o błędzie: Kod <?php if (isset($logon_info)) echo "<SPAN ID=serror>$logon_info</SPAN><BR>"; if (isset($user_login)) echo "<A HREF=logoff_script.php>Wyloguj <SPAN ID=sinfo>$user_login</SPAN></A><BR>"; ?> <FORM ACTION=logon_script.php METHOD=post> <SPAN ID=title>UŻYTKOWNIK</SPAN><BR> <INPUT ID=login TYPE=text NAME=login><BR> <SPAN ID=title>HASŁO</SPAN><BR> <INPUT ID=login TYPE=password NAME=password><BR> <INPUT ID=login TYPE=submit NAME=submit VALUE=OK> </FORM> <?php if(isset($user_login)) echo "<a href=new.php>Nowe zgłoszenie</a><BR>"; if(isset($user_login)) echo "<a href=archives.php>Archiwum</a>"; ?> Skrypt logowania wygląda następująco: Kod <?php session_start(); if (($login=="")||($password=="")) { $logon_info='BRAK DANYCH'; if (!session_is_registered('logon_info')) session_register('logon_info'); Header('Location: index.php'); exit; } include("connect/connect.php"); $results=mssql_query("SELECT kod, prawa FROM uzytkownicy WHERE login='$login' AND haslo='$password'",$connection); mssql_close($connection); if (mssql_num_rows($results)==0) { $logon_info='BŁDNE DANE'; if (!session_is_registered('logon_info')) session_register('logon_info'); Header('Location: index.php'); exit; } $row=mssql_fetch_row($results); $user_id=$row[0]; $user_login=$login; $user_access=$row[1]; if (!session_is_registered('user_id')) session_register('user_id'); if (!session_is_registered('user_login')) session_register('user_login'); if (!session_is_registered('user_access')) session_register('user_access'); Header('Location: index.php'); ?> Niezależnie od tego, czy zostały wprowadzone login i hasło i czy dane są poprawne po kliknięciu na przycisk SUBMIT mogą wystąpić wyżej wymienione objawy. Na marginesie: Pewnie wyjdę na tatalnego laika, ale nie widzę większej różnicy pomiędzy PRINT a ECHO oraz konieczności zamykania w klamrach pojedynczej instrukcji. Niemniej jednak dzięki za uwagi. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 17:11 |