Stránka 1 z 1
Problem se session
Napsal: úte 18. pro 2007, 11:22
od Vodny
Zdravim.
Mám nějakou práci do školy a potřebuju pomoct. První co mě zajímá jak moc velkej rozdíl je mezi skutečnym serverem (u mě webzdarma) a localhostem.
Jde o to že na local hostu mi vše funguje a když to nahraju na web zdarma tak to nejde. Mám tam registraci ta jde přihlášení se taky povede jenže když jako přihlášenej na něco kliknu tak se jakoby ta session ztratí fakt se mi to špatně popisuje ale můžete to zkusit jestli se nudíte.
www.motocr.wz.cz
Nechápu jak to že to na localu běží a tam ne. Kde je nejspíš chyba?
Díky a omluvte to vysvětlení jsem meganas..... je to fakt pakárna
Napsal: úte 18. pro 2007, 11:33
od l_iNu$
U tebe a na serveru se samozřejmě může lišit verze PHP a jeho nastavení. Na což je potřeba dávat pozor.
A pokud zde ten tvůj problém nepopíšeš líp nebo neukážeš zdrojáky tak ti asi nikdo moc nepomůže.
Napsal: úte 18. pro 2007, 11:56
od Vodny
Tak to nevim páč nevim co by mohlo bejt důležitý a kde by se ta chyba mohla objevit.
Takže tohle je index.php
Tučně jsem zvýraznil jedinou změnu po přihlášení a ta se projeví pouze hned po zalogování ale při dalším procházeni stránky už proste tohle :
<?php
if ($_SESSION["uzivatel"])
{
include ("prihlasen.php");
}
else
{
include ("prihlaseni.php");
}
nefunguje. V tom session uzivatel je uložený jedinečnej login kterej je v DB.
Kód: Vybrat vše
<?php
session_start();
?>
<?php
include ("hlavicka.php");
?>
<body>
<!-- Začátek Obalu -->
<div id="obal">
<div id="head"></div>
<?php
include ("menu.php");
?>
<!-- Hlavní obsah stránky -->
<div id="inzeraty">
<!-- Inzerát -->
<?php
$stranka = $_GET["stranka"];
switch ($stranka)
{
case null:
$odkaz = "inzerat.php";
break;
case $stranka == "kontakt":
$odkaz = "kontakt.php";
break;
case $stranka == "workofka":
$odkaz = "workofka.php";
break;
case $stranka == "registrace":
$odkaz = "registrace.php";
break;
case $stranka == "osobniudaje":
$odkaz = "osobniudaje.php";
break;
case $stranka == "zmenahesla":
$odkaz = "zmenahesla.php";
break;
case $stranka == "odhlaseni":
$odkaz = "odhlaseni.php";
break;
}
include ($odkaz);
?>
<!-- Konec Inzerát -->
</div>
<!-- Pravý menu -->
<div id="pravyMenu">
<!-- Přihlášení -->
<?php
if ($_SESSION["uzivatel"])
{
include ("prihlasen.php");
}
else
{
include ("prihlaseni.php");
}
?>
<!-- Vyhledávání -->
<?php
include ("vyhledavani.php")
?>
<!-- Informace -->
<?php
include ("informace.php")
?>
</div>
<!-- Pata -->
<?php
include ("pata.php")
?>
</div><!-- Konec Obalu -->
</body>
</html>
Napsal: úte 18. pro 2007, 11:57
od Vodny
Můžete si to zkusit jen tam uživatel
login : a
heslo : a
Napsal: úte 18. pro 2007, 14:20
od cabman
Já myslím že ti tam chybí registrace session. Nevím jestli je to důvod proč to nechodí, ale mě to dělalo něco podobného a vyřešila to registrace. Věci jako session_start() se vkládají externě.
Kód: Vybrat vše
<?
//login.php
//načtení funkcí a connectu k databázi
include 'connect.php';
include 'authentifikace.php';
//authenticateuser je funkce schovaná ve autentifikace.php,
//která podle tabulky ověří, zda je uživatel registrován
//pokud ano tak vrací 1 a provede se if jinak se provede else
if (authenticateuserform($form_user_id,$form_password))
{
//registruji session pro info o uživateli které budou využívány k ověření na každé stránce
session_register(loginus);
session_register(heslous);
session_register(hodnostus);
$loginus = $form_user_id;
$heslous = $form_password;
$hodnostus = dejhodnost($form_user_id);
//přesměrování hlavičkou do .php
header("Location:http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/"."adminindex.php");
exit();
}
else
{
//přesměrování hlavičkou do logout.php protože údaje o zákazníkovi nesouhlasí
//uživatel může skusit zadat informace znovu
header("Location:http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/"."logout.php");
exit();
}
?>
Napsal: úte 18. pro 2007, 14:53
od l_iNu$
cabman píše:Já myslím že ti tam chybí registrace session. Nevím jestli je to důvod proč to nechodí, ale mě to dělalo něco podobného a vyřešila to registrace.
Session_register je "deprecated". Používá se $_SESSION["neco"].
cabman píše:Věci jako session_start() se vkládají externě.
Jak externě?
Vodny: co zdroj zaloguj.php?
Napsal: úte 18. pro 2007, 14:55
od Vodny
tohle je zaloguj.php
Kód: Vybrat vše
<?php
session_start();
?>
<?php
$log = $_POST['login'];
$pass = $_POST['heslo'];
$hlavicka = "Informace o přihlašní do MotoCR";
if ($log == null || $pass == null)
{
$hlaska = "Nevyplni jsi login nebo heslo";
}
else
{
require_once ('pripojit.php');
$dotazlog = mysql_query("select login,heslo from uzivatel where login = '$log'");
$zaznam = MySQL_Fetch_Array($dotazlog, MYSQL_NUM);
if ($zaznam[0]==null)
{
$hlaska = "uživatel nenalezen";
}
else
{
if($zaznam[1]==$pass)
{
$_SESSION["uzivatel"]= $log;
$hlaska = "Přihlášen jako ".$_SESSION["uzivatel"];
}
else
{
$hlaska = "špatný heslo!";
}
}
}
include ("hlaska.php");
?>
Napsal: úte 18. pro 2007, 15:11
od Vodny
Fakt tomu nerozumim na webzdarma se přihlásim jako "a" "a" příhlásí se to ale při dalšim procházení webu to prostě už v tý SESSION asi nejni nebo nevim. Ale na tom localu to prostě jde jak je to sakra možný .
Napsal: úte 18. pro 2007, 15:18
od l_iNu$
Vodny píše:Fakt tomu nerozumim na webzdarma se přihlásim jako "a" "a" příhlásí se to ale při dalšim procházení webu to prostě už v tý SESSION asi nejni nebo nevim. Ale na tom localu to prostě jde jak je to sakra možný .
Napsal: úte 18. pro 2007, 15:19
od Vodny
??
var_dump($_SESSION);
??
Prosím můžeš mi to vysvětlit co to je?
Napsal: úte 18. pro 2007, 15:25
od l_iNu$
Vodny píše:var_dump($_SESSION);
Prosím můžeš mi to vysvětlit co to je?
Výpiše obsah a typ proměnné . )
Napsal: úte 18. pro 2007, 15:28
od Vodny
a k čemu to ? vypsat to můžu přece i pomocí ECHa
Napsal: úte 18. pro 2007, 15:32
od l_iNu$
Vodny píše:a k čemu to ? vypsat to můžu přece i pomocí ECHa
No říkáš že se ti ztrácí ty proměnné, tak abys viděl co tam máš za hodnoty.
Napsal: úte 18. pro 2007, 15:37
od Vodny
Jo tak. Já tušim kde se to ztrácí ale nevim proč.
Napsal: úte 18. pro 2007, 15:42
od TomTom
Máš povolený cookies pro přenos SID nebo ho předáváš v URL?
Napsal: úte 18. pro 2007, 15:43
od Vodny
TomTom píše:Máš povolený cookies pro přenos SID nebo ho předáváš v URL?
Kde se musí povolit ten přenos SID pře URL nic nepodávám.
Napsal: úte 18. pro 2007, 15:44
od l_iNu$
No vono už je spatně tohle:
správně by asi mělo být
Kód: Vybrat vše
if (isset($_SESSION["uzivatel"])) ...
Napsal: úte 18. pro 2007, 15:48
od Vodny
l_iNu$ píše:No vono už je spatně tohle:
správně by asi mělo být
Kód: Vybrat vše
if (isset($_SESSION["uzivatel"])) ...
Kruci chlape máš recht! to bude tim dal jsem to tam sice to neukazuje to co to má ale je to přihlášený a už to neodpadá! takže díky díky moc konečně se to hnulo
Napsal: úte 18. pro 2007, 15:49
od TomTom
Vodny píše:TomTom píše:Máš povolený cookies pro přenos SID nebo ho předáváš v URL?
Kde se musí povolit ten přenos SID pře URL nic nepodávám.
Nastavení session je v php.ini. Můžeš mit celkově jinak nastavenou praci se session na localhostu než maj na tom WZ. Jinak cookies vypínáš/zapínáš normálně v prohlížeči. Ale kdyby jsi je měl vyplé, tak by nefungovalo přihlášení vůbec..
Napsal: úte 18. pro 2007, 16:12
od Vodny
stejně tam je pořád problém udržet tu session naživu. to tom přidání isset se sice ukáže to menu který se má tomu přihlášenýmu ukázat ale v session je uložená hodnota "0" ono se to musí nechat nějakym způsobem předávat protože takhle jak mi to teď funguje je to pořád špatný