Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje
Forum PHP.pl > Forum > Przedszkole
xx88zg
Witam,

czytałem już wiele w internecie i albo jestem głupi i nie rozumiem, albo nie znalazłem tego czego szukałem.

Mianowicie wiem już jak zainicjować sesje ale nie wiem jak do niech zapisać np zmienną login (jeżeli to w ogóle możliwe) tak aby mógł bym jej używać w innych podstronach. Teoretycznie mógł bym używać metody GET ale nie chcę aby zawartość zmiennej login była widoczna w adresie.


Będę bardzo wdzięczny za odp.

Pozdrawiam
baszkir
Google nie gryzie, manual tez nie.
No ale niech bedzie, google zwrocil np.:

http://jacekk.info/articles/see/1

jest tam to opisane "łopatologicznie"
xx88zg
no masz racje napisane bardzo przystępnie ale ja chyba jestem nie reformowalny:)

mam takie coś:
  1. <?php
  2. session_register("zalogowany");
  3. $_SESSION["login"] = "$_POST[login]";
  4.  
  5. $cmd = $_GET['cmd'];
  6.  
  7. formularz rejestracyjny
  8.  
  9. if($_SESSION["zalogowany"]!=1)
  10. i tu taj si&#281; wyświetla zawartość strony:
  11. else
  12. {formularz je&#380;eli zalogowany nie = 1}
  13.  
  14. if ($cmd == '1'){
  15.   echo $_SESSION['login'];
  16.      } else {}
  17. if ($cmd == '2'){
  18.   echo $_SESSION['login'];
  19.     } else {}
  20. ?>


Sprostowanie - formularz rejestracyjny domyślnie ma przypisana akcje na index.php?cmd=1 i wyświetla faktycznie ten login, ale jak dam odnośnik na index.php?cmd=2 i w tym momencie nie wyświetla nic sad.gif

pewno coś nie jasno wytłumaczyłem i zle coś napisałem, ale ja sie dopiero uczę smile.gif
markac
A gdzie używasz session_start() bo go tu nie widzę i czemu korzystasz z session_register()? Wywal to.
Naprawdę manual nie gryzie i nikt kopiować z niego nie ma zamiaru. Wszystko po polsku do tego http://pl.php.net/manual/pl/function.session-start.php ;/
xx88zg
witam,


wiem tyle że mi nie działa z powodu tego fragmentu kodu:

  1. <?php
  2. $_SESSION["login"] = "$_POST[login]";
  3. ?>


ponieważ przy przejściu do podstrony index.php?cmd=dane zmienna $_POST[login] jest pusta i automatycznie zmienna $_SESSION też jest pusta. Dlatego mam na początku coś takiego:

  1. <?php
  2. if ($cmd == 'zamowienia')
  3.        $_SESSION['login'] = $_POST['login'];
  4.    else
  5.        {}
  6. ?>


Ale problem pojawia się gdy znowu chcę wejść na stronę index.php?cmd=zamowienia
markac
A ja ponownie pytam, gdzie masz w kodzie session_start()? Czy widzisz różnice miedzy $_POST, $_GET i $_SESSION? Dlaczego $cmd nie jest sprawdzana w tablicy $_GET? Masz domyślnie włączone zmienne globalne czy po prostu jesteś niekonsekwentny?

Twój kod:
  1. <?php
  2. $_SESSION["login"] = "$_POST[login]";
  3. ?>

Jeśli zmienna $_POST['login'] jest pusta, to chyba nie powinno Cie dziwić, że przypisując pustą wartość do $_SESSION['login'], ona także będzie pusta?!
W ogóle, to zanim przypiszesz lub odczytasz coś z $_SESSION powinieneś użyć session_start(). Odsyłam do manuala!
xx88zg
tam wszedzie jest session_start() tylko ja zapomnialem dopisac w kodzie na forum

a co do sprawdzania GET to jest w kodzie na samej gorze - to jest ca;y czas tena sam kod

  1. <?php
  2. $cmd = $_GET['cmd'];
  3. ?>
markac
Skoro nie umieszczasz tu wszystkiego to równie dobrze błąd może być w innym miejscu i nikt Ci nie pomoże. Jedyne co jest pewne to fakt, że zmienne $_POST i $_GET nie maja wpływu na $_SESSION, chyba, że masz włączone register_globals, więc szukaj błędu dalej.
xx88zg
o to caly moj kod:

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. $kto = $_GET['kto'];
  5. $cmd = $_GET['cmd'];
  6.  
  7.    if ($cmd == 'zamowienia')
  8.        $_SESSION['login'] = $_POST['login'];
  9.    else
  10.        {}
  11.  
  12. global $login;
  13. $login = $_SESSION['login'];
  14.  
  15. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  16.  
  17. mysql_connect("localhost","xxx","xxx");
  18.  
  19. function ShowLogin($komunikat=""){
  20.    echo "$komunikat<br>";
  21.    echo "<form action='index.php?cmd=zamowienia' method=post>";
  22.    echo "Login: <input type=text name=login><br>";
  23.    echo "Hasło: <input type=text name=haslo><br>";
  24.    echo "<input type=submit value='Zaloguj!'>";
  25.    echo "</form>";
  26.    echo "Jeśli nie jesteś zarejestrowany, <a href='rejestruj.php'>tu znajdziesz formularz</a>";
  27. }
  28.  
  29. function zamowienia($login="") {
  30.    echo "Twoje zamówienia $login: <br><br>";
  31.    $zapytanie = "SELECT `id`,`co`,`kto` FROM `zamowienia` WHERE `kto`='$login' ";
  32.    $idedo = mysql_query($zapytanie)or die(mysql_error());
  33.    while ($wiersz = mysql_fetch_row($idedo))  
  34.     {
  35.      
  36.          $zap = "SELECT `id`,`nazwa`,`cena` FROM `oferta` WHERE `id`='$wiersz[1]' ";
  37.        $ide = mysql_query($zap)or die(mysql_error());
  38.        while ($w = mysql_fetch_row($ide))  
  39.         {
  40.        $a = $a+1;
  41.         echo "$a. $w[1] - $w[2] zł<br>";
  42.    
  43.         }
  44.    
  45.     }
  46.     echo "<a href='index.php?wyloguj=tak'>wyloguj się</a> | <a href='index.php?cmd=dane'>pokaż dane</a>";
  47.     }
  48.    
  49. function dane($login="") {
  50.    echo "$login<br><br>";
  51.    echo "<a href='index.php?wyloguj=tak'>wyloguj się</a> | <a href='index.php?cmd=zamowienia'>pokaż dane</a>";
  52.     }
  53. ?>
  54. <!DOCTYPE html
  55.    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  56.    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  57. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  58. <head>
  59.    <title>Strona główna</title>
  60. </head>
  61. <body bgcolor="#999966" text="#FFFFFF" link="#000000" vlink="#CCCCCC" alink="#FFFFFF">
  62. <?php
  63.  
  64. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeś wylogowany z serwisu";}
  65. if($_SESSION["zalogowany"]!=1){
  66.    if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  67.        if(mysql_num_rows(mysql_query("select * from users where user_login = '".htmlspecialchars($_POST["login"])."' AND user_haslo = '".htmlspecialchars($_POST["haslo"])."'"))){
  68.                                    if ($cmd == 'zamowienia'){
  69.                                        echo zamowienia($_SESSION['login']);
  70.                                            } else {}
  71.                                    if ($cmd == 'dane'){
  72.                                        echo dane($_SESSION['login']);
  73.                                            } else {}
  74.            
  75.            $_SESSION["zalogowany"]=1;
  76.            }
  77.        else echo ShowLogin("Podano złe dane!!!");
  78.        }
  79.    else ShowLogin();
  80. }
  81. else{
  82.                if ($cmd == 'zamowienia'){
  83.                    echo zamowienia($login);
  84.                        } else {}
  85.                if ($cmd == 'dane'){
  86.                    echo dane($_SESSION['login']);
  87.                        } else {}
  88. }
  89. ?>
  90.  
  91. </body>
  92. </html>
  93. <?php mysql_close(); ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.