Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> $_SESSION
katomasz
post 20.05.2005, 15:02:52
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??
Go to the top of the page
+Quote Post
3 Stron V   1 2 3 >  
Start new topic
Odpowiedzi (1 - 19)
dr_bonzo
post 20.05.2005, 15:05:27
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.
Go to the top of the page
+Quote Post
katomasz
post 20.05.2005, 19:20:22
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
Go to the top of the page
+Quote Post
strife
post 20.05.2005, 20:36:28
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 ?


--------------------
Go to the top of the page
+Quote Post
katomasz
post 21.05.2005, 06:12:58
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();
Go to the top of the page
+Quote Post
Pigula
post 21.05.2005, 07:56:14
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
Go to the top of the page
+Quote Post
katomasz
post 21.05.2005, 09:05:42
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?questionmark.gif
Go to the top of the page
+Quote Post
Pigula
post 21.05.2005, 09:52:19
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.
Go to the top of the page
+Quote Post
katomasz
post 21.05.2005, 10:54:23
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.
Go to the top of the page
+Quote Post
nospor
post 21.05.2005, 10:55:52
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

Go to the top of the page
+Quote Post
Pigula
post 21.05.2005, 11:32:37
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 smile.gif
Go to the top of the page
+Quote Post
katomasz
post 21.05.2005, 19:22:50
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.
Go to the top of the page
+Quote Post
Bonhart
post 21.05.2005, 19:51:50
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 smile.gif. I nie denerwuj sie tak bo trudno wrozyc z kuli co ktos tam ma w kodzie smile.gif


--------------------
---
Pozdrowienia
Marko
Go to the top of the page
+Quote Post
katomasz
post 23.05.2005, 07:32:15
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?
Go to the top of the page
+Quote Post
scanner
post 23.05.2005, 08:28:19
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.


--------------------
scanner.info
Warto pamiętać: KISS, DRY
Go to the top of the page
+Quote Post
katomasz
post 23.05.2005, 09:11:06
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
Go to the top of the page
+Quote Post
nospor
post 23.05.2005, 09:17:04
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

Go to the top of the page
+Quote Post
katomasz
post 23.05.2005, 09:20:19
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.
Go to the top of the page
+Quote Post
nospor
post 23.05.2005, 09:24:42
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

Go to the top of the page
+Quote Post
katomasz
post 23.05.2005, 09:31:05
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.
Go to the top of the page
+Quote Post

3 Stron V   1 2 3 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 05:45