Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

3 Stron V   1 2 3 >  
Reply to this topicStart new topic
> $_SESSION
katomasz
post
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
dr_bonzo
post
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';
Go to the top of the page
+Quote Post
katomasz
post
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
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
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
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
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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Pigula
post
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
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
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
Go to the top of the page
+Quote Post
Pigula
post
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
katomasz
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . I nie denerwuj sie tak bo trudno wrozyc z kuli co ktos tam ma w kodzie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
katomasz
post
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
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.
Go to the top of the page
+Quote Post
katomasz
post
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
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...
Go to the top of the page
+Quote Post
katomasz
post
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
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
Go to the top of the page
+Quote Post
katomasz
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 17:31