![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam dwie strony. Na pierwszej sprawdzane jest logowanie i ustawiana sesja $name=$_SESSION['user']. Na drugiej sprawdzam if(isset($_SESSION['user'])) to ma wykonywać dalsze instrukcje, jeżeli nie ma wyjść. I zawsze wychodzi. Jeżeli próbuję wyciągnąć zmienną sesji, to tam nic nie ma. Dlaczego??
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Bo trzeba cos do sesji zapisac:
$_SESSION['user'] = 'nazwa usera'; -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Bo i tak jest. Wcześniej jest błąd. Prawidłowo jest $name='uzytkownik', a następnie $_SESSION['user']=$name. I to właśnie działa, a na następnej stronie już nie.
Ten post edytował katomasz 20.05.2005, 19:21:52 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 605 Pomógł: 96 Dołączył: 22.10.2004 Skąd: UK Ostrzeżenie: (0%) ![]() ![]() |
Cytat(katomasz @ 2005-05-20 20:20:22) Bo i tak jest. Wcześniej jest błąd. Prawidłowo jest $name='uzytkownik', a następnie $_SESSION['user']=$name. I to właśnie działa, a na następnej stronie już nie. A masz na samym początku session_start" title="Zobacz w manualu PHP" target="_manual ? -------------------- Najczęstsze błędy | Jak poprawnie zadać pytanie? | Serwer PHP - od czego zacząć?
SQL Injection | Hashowanie haseł | Jak działają sesje, przykłady ___ The world is yours ... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście. Na początku każdej strony jest session_start();
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
to moze pokaz kod to ktos moze i cos ci podpowie
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Więc jeszcze raz. Pierwsza strona logowania. Ustawiana jest zmienna $_SESSION, która pobiera dane z nazwy użytkownika. W każdym następnym pliku, który, jak to z reguły bywa, musi być autoryzowany, sprawdzam, czy użytkownik, który próbuje się tam dostać otrzymał SID. Jeżeli tak to dalej jeżeli nie to do strony logowania. I niestety, SID jest tylko na stronie logowania (zamiast przeniesienia do następnej strony sprawdzam, czy na tej stronie jest ustawiona sesja, czy nie - i jest). Ale niestety, na każdej następnej już nie. I pytanie Dlaczego?
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
sprobuj dowiazac do linka SID i sprawdz. a mi chodzilo o kod bo tak co piszesz to powinno dzialac a nie dziala wiec moze masz blad gdzies w skrypcie.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzę, ale mam możliwość dopiero w poniedziałek. Kod jest na pewno poprawny, bo gdy moje dzieło nie działało, to przepisałem żywcem przykłady z książek i było to samo. Chodziło mi o to, czy nie trzeba ustawić jakiś zmiennych w plikach konfiguracyjnych Apache'a lub php.
Dzięki, sprawdzę i odpowiem. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Kod jest na pewno poprawny, ... przepisałem żywcem przykłady z książek i było to samo Wierz mi, w książkach też zdarzają się byki
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 446 Pomógł: 0 Dołączył: 5.03.2005 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Cytat(katomasz @ 2005-05-21 11:54:23) Sprawdzę, ale mam możliwość dopiero w poniedziałek. Kod jest na pewno poprawny, bo gdy moje dzieło nie działało, to przepisałem żywcem przykłady z książek i było to samo. Chodziło mi o to, czy nie trzeba ustawić jakiś zmiennych w plikach konfiguracyjnych Apache'a lub php. Dzięki, sprawdzę i odpowiem. jezeli sprawdzasz strone na localhost i nic nie kombinowales przy skonfiguracji serwera to on raczej nie jest ot jego wina. a co do kodu to jak nospor mowi w ksiazkach tez sa bledy. pozatym naprawde duzym problemem nie jest zaznaczyc tekst a potem Ctrl+C i Ctrl+V ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Nie jestem dzieckiem i nie jestem "ciemniakiem". Wiem co wpisałem i posta podałem dlatego, że nie orientuję się dlaczego to nie działa, chociaż powinno. Myślę, że jeżeli takie mam słyszeć porady, to lepiej ich nie słyszeć. Proszę o zrozumienie, ale nie posunąłem się w tej sprawie, nie licząć przekazania, aby dowiązać SID do linka, ani kroku. Jedyne co, to mogę się niedługo zgubić o co mi chodziło.
|
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 5 Pomógł: 1 Dołączył: 20.06.2002 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(katomasz @ 2005-05-21 20:22:50) Proszę o zrozumienie, ale nie posunąłem się w tej sprawie, nie licząć przekazania, aby dowiązać SID do linka, ani kroku. Jedyne co, to mogę się niedługo zgubić o co mi chodziło. a moze ustawiasz gdzies session_name, sprawdz jeszcze czy masz wlaczone raportowanie bledow (albo ustaw sobie error_reporting(E_ALL)). Moze wysylasz gdzies jakis bialy znak ![]() ![]() -------------------- ---
Pozdrowienia Marko |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Oto błąd, który się zgłasza po wywołaniu $_SESSION['name'] - Undefined index: name in , i tu nazwa pliku. Podkreślam jeszczed raz, że początek pliku, to session_start(); . Wychodzi na to, że dane sesji nie są przekazywane pomiędzy stronami. Dlaczego?
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarząd Postów: 3 503 Pomógł: 28 Dołączył: 17.10.2002 Skąd: Wrocław ![]() |
Cytat(katomasz @ 2005-05-21 20:22:50) Nie jestem dzieckiem i nie jestem "ciemniakiem". Jesteś. Zgodnie z zaakceptowanym przez Ciebie Regulaminem Forum (pkt IV.2.d) Twoim obowiązkiem jest podać błędnie działający kod. Nikt z nas nie jest jasnowidzem. Kolejny Twój post bez zacytowania odpowiednich fragmentów kodu spowoduje zamknięcie wątku. -------------------- |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Ależ proszę, chociaż wszystko jest w poprzednich postach, ale "kawę na ławę" panie Scanner.
Plik logowanie.html <FORM METHOD=POST ACTION="Loguj.php"> <CENTER> <BR><B>PROSZ PODAĆ DANE DO LOGOWANIA</B><BR><BR><BR> <INPUT TYPE=text NAME=LOGIN SIZE=20><BR><FONT SIZE="-1"><B>LOGIN</FONT></B><BR><BR><BR> <INPUT TYPE=PASSWORD NAME=PASS SIZE=21><BR><FONT SIZE="-1"><B>HASŁO</B><BR><BR><BR> <INPUT TYPE=submit VALUE=Loguj> </CENTER> </FORM> Plik loguj.php <?php session_start(); $name=$_POST['LOGIN']; $pass=$_POST['PASS']; if ($name=="") $name="zzzz"; $nazwa=$name."\t".$pass."\t"; $file=fread(fopen("users.dat", "rb"),999); if (!$file) { echo 'brak pliku'; } if (strstr($file, $nazwa)) { if ($name=="Administrat") $name=$name."super"; $_SESSION['user']=$name; header ("Location: main.php"); } else { print "<B><CENTER>Logowanie nie powiodło się</CENTER></B><BR><BR><BR>"; print "<A HREF=logowanie.html>POWRÓT</A>"; } ?> plik main.php <?php session_start(); error_reporting(E_ALL) if (isset($_SESSION['user'])) header ("Location : logowanie.html"); print "udało się"; echo '<CENTER>Zalogowany' .$_SESSION['user']. '</CENTER>'; ?> i właśnie w pliku main.php zgłaszany jest błąd - Undefined index: name in , i tu nazwa pliku. Czy jest to wystarczająco jasno? Poza tym "postarajmy się" nie oznacza trzeba. Chyba ktoś tu nie rozumie niektórych słów. A szkoda. Ten post edytował katomasz 23.05.2005, 09:14:13 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Używaj bbcode!!!
patrze na ten main.php i patrze i jakos nie widze zebys gdzies uzywal indexu name. A taki ponoc blad ci wywala... -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Sorki, ale to pozostało po próbach. Powinno być - Undefined index: user in , i tu nazwa pliku.
|
|
|
![]()
Post
#19
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
a nie powinno wywalac czegoś takiego skoro najpierw sprawdzasz czy jest ustawione to user. Bo masz przecież if'a : if (isset($_SESSION['user']))
edit: zapomniales o klamrach dla tego warunku i tylko jedną linię on obejmuje Ten post edytował nospor 23.05.2005, 09:25:49 -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 49 Pomógł: 0 Dołączył: 20.05.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze raz ten kod, który teraz jeest już całkiem w porządku
plik main.php <?php session_start(); error_reporting(E_ALL) if (!isset($_SESSION['user'])) header ("Location : logowanie.html"); print "udało się"; echo '<CENTER>Zalogowany' .$_SESSION['user']. '</CENTER>'; ?> czyli, jeżeli zmienna sesji nie ustawiona wróć do logowanie.html, jeżeli ustawiona, wypisz echo. Sytuacja ma się w ten sposób, że dla kody zmienna sesji nie istnieje, bo czy jest if (isset; czy też if (!isset; to to działa tak samo. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.06.2025 - 05:45 |