Přenášení hodnot v SESSIONs

10 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. Ahoj, mám takový hloupý dotaz, normálně přenáším ID uživatele v SESSION['IDUzivatele'], ale v kazdem scriptu, který includuju jeste kontroluju, jestli je SESSION['IDUzivatele'] platna ( if (!isset($_SESSION['IDUzivatele'])) { Header("Location: logout.php"); }), pokud ne, tak presmeruj na logout.php (ten zrusi session (session_destroy()) a zase kickne na stranku login.php. Problem, ale je, ze ID se mi v SESSIONs neprenaseji, takze to pokazde kope na login.php. Kde je chyba? Mám vše standartně nastavene.
  2. A mas tam pokazde session_start() ? :-D
  3. tak hloupou reakci jsem opravdu nečekal...
  4. Seb: "tak hloupou reakci jsem opravdu nečekal..." Na hloupý dotaz hloupá odpověď - to neznáš? ;) K tématu: byl by kód? V tom tvém popisu není dostatek relevantních informací...
  5. Ok, tak sry, omlouvam se, ale uz jsem zvykly ze tady pravidelne pisoulidi, kteri maji problemy presne s tim, ze prehlednou takovou blbost :)) (a peclove jsem to uz predtim v tvem dotazu hledal, jestli to tam neni xD )... ale k tematu :) : session se standartně předává pomocí cookies (ale pokud jsou zakázány,tak se musí předat přes url, což do každého odkazu potom musís napsat(nechat vypsat xD) ... // bez zdrojaku se blbe radi, tak sorry kdyztak za zbytecnou poznamku xD
  6. Uno, Index.php: include("opendb.php"); if (!empty($_POST['Login']) and !empty($_POST['Heslo'])) { // jsou vyplneny policka ve formulari if (strlen($_POST['Login'])<32 and strlen($_POST['Heslo'])<32) { // delka Loginu a Hesla neni vetsi nez 32 $_POST['Heslo'] = md5($_POST['Heslo']); $dotaz = mysql_query("SELECT IDHrace, Typ_uctu, Povoleny FROM Hraci WHERE Login LIKE '".$_POST['Login']."' AND Heslo LIKE '".$_POST['Heslo']."'") or die(mysql_error()); if (mysql_num_rows($dotaz) != 0) { // záznam je v DB $pristup = MySQL_Fetch_Array($dotaz); // if ($pristup['Povoleny']==0) { echo "Účet nebyl povolen, nebo je blokován."; } $_SESSION['IDHrace'] = $pristup['IDHrace']; $idhrace = $pristup['IDHrace']; $dotaz = mysql_query("SELECT UNIX_TIMESTAMP(Start) AS Start, UNIX_TIMESTAMP(Konec) AS Konec FROM System"); $system = mysql_fetch_array($dotaz); if ($system['Start']<time(now) and time(now)<$system['Konec'] or $pristup['Typ_Uctu']==1 or $pristup['Typ_uctu']==2 or $pristup['Typ_uctu']==3) { // Hra právě probíhá // Nebo neprobíhá, ale je přístupná pouze pro 'Testery'=3, 'Vyvojáře'=2 nebo 'Administratora'=1 $idpostavy = mysql_query("SELECT IDPostavy FROM Postavy WHERE (IDHrace LIKE '".$idhrace."')") or die(mysql_error()); if ($idpostavy) { if (mysql_num_rows($idpostavy)!=0) { $pristup = mysql_fetch_array($idpostavy); $_SESSION['IDPostavy'] = $pristup['IDPostavy']; Header("Location: http://../index.php"); } else { Header("Location: http://../create.php"); } } else { echo "Chyba při vykonávání dotazu na DB.\nCislo chyby: ".mysql_errno()."\n<br />"; } } else { echo "<h1>Hra ještě nebyla spuštěna.</h1>"; } } else { echo "Bohužel, nenalezli jsme Vás v databázi, chcete se registrovat?"; } } else { echo "Délka řetězců je příliš dlouhá"; } } else { echo "IDHrace: ".$_SESSION['IDHrace']."\n<br />"; echo "IDPostavy: ".$_SESSION['IDPostavy']."\n<br />"; Pak index.php session_start(); if (!isset($_SESSION['IDHrace'])) { Header("Location: http://heroonline.mysteria.cz/php2/logout.php"); } else { include("opendb.php"); $dotaz = mysql_query("SELECT Nadpis_okna FROM System"); $system = mysql_fetch_array($dotaz); } tvorba.php : $zobrazim = true; if (IsSet($_SESSION['IDHrace'])) { ... blok } else { Header("Location: http://heroonline.mysteria.cz/php2/logout.php"); } a logout.php <?php session_start(); // session_destroy(); Header("Location: http://heroonline.mysteria.cz/php2/login.php"); ?> // session_destroy() je vypnuty, kvuli kontrole, co se v Sessions predava, jinak je samozrejme pouzivany... Fakt už nevim cim by to mohlo byt...
  7. nejsem odborník, ale fce session_start() MUSÍ být na ZAČÁTKU scriptu navíc v tom prvnim (Index.php) není vůbec session_start http://www.linuxsoft.cz/article.php?id_article=440 - článek o sessions cituji: "Abyste mohli začít pracovat v session, musíte to PHP oznámit pomocí příkazu session_start (). Typický skript využívající session vypadá tedy následovně: <? session_start(); session_register("promenna"); $_SESSION["promenna"]="hodnota"; // ... atd... ?> Korektura: Sessions se od verze PHP 4.1.0 dají spouštět automaticky a volání příkazu session_start tak není nutné." takže sem ti vůbec neporadil :D ale v mauálu: http://cz.php.net/manual/en/ref.session.php používaj všude sessions_start() tak sem jelen
  8. Jo, pohoda, už jsem to vyřešil... Samozřejmě, že sessions_start() na začátku mám, ale nebudu sem psát cele skripty, ne? A co se týká automatického doplnění sessions_start to se nastavuje v nastavení php interpretu pod položkou tuším že "session_autostart"... Ale jinak díky za ochotu a sorry Freeze, že sem byl na tebe hnusnej, tekly mi už včera nervy...
  9. Seb: a co takhle se o řešení podělit? Třeba se najde někdo, kdo to bude v budoucnu potřebovat?!
  10. třeba já :-) ete sem slyešel, že když někdo má vyplé cookies, tak se má session předávat v url jako index.php?<?php echo SID ?> což vůbec nechápu. bylo to na interval.cz článek o session pro zajímavost :-)

← Zpět na všechna témata