Autor | Zpráva | ||
---|---|---|---|
Martin011 Profil |
#1 · Zasláno: 8. 7. 2009, 12:39:01
Dobrý den, mám problém s přihlášením na stránky. Registrace nového uživatele proběhne bez problémů i samotné přihlášení nepíše žádnou chybu. Problém je v tom, že se mi nezobrazuje, že je uživatel přihlášen. Pořád tam zůstává uživatel nepříhlášen. V souboru login_zpracuj.php mám tenhle kód:
<?php ob_start(); session_start(); if(isset($_POST['jmeno'])){ require_once 'db.php'; $name = $_POST['jmeno']; $pass = md5($_POST['heslo']); $query = mysql_query("SELECT * FROM `uzivatele` WHERE `jmeno` = '$name' and `heslo` = '$pass'") or die (mysql_error()); $Vysledek = mysql_fetch_array($query); if($Vysledek['jmeno']) $_SESSION['prihlasen'] = 1; $_SESSION['login'] = $Vysledek['jmeno']; $_SESSION['UserId'] = $Vysledek['id']; $_SESSION['UserWeb'] = $Vysledek['web']; $_SESSION['UserMail'] = $Vysledek['mail']; $bl="index.php"; header("location: $bl"); exit; }else{ $bl="index.php?Alert=6"; header("location: $bl"); exit; // echo "Zadal jsi špatné údaje"; } mysql_free_result($query); }else{ echo "Zde nic není."; } ob_end_flush(); ?> |
||
fopen Profil * |
#2 · Zasláno: 8. 7. 2009, 12:49:26
a v souboru "uživatel nepříhlášen" mas session_start(); ?
|
||
Martin011 Profil |
#3 · Zasláno: 8. 7. 2009, 13:10:16
no, mám více souborů, ale v hlavním index.php mám:
<?php session_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="cs" /> <link rel='stylesheet' type='text/css' href='styl.css' /> <body> <div id="horni_menu"> <?php * V přihlašovacím skriptu jsme nastavili $_SESSION['prihlasen']=1, pokud se $_SESSION['prihlasen'] opravdu rovná jedničce, uživatel je přihlášen. if(isset($_SESSION['prihlasen']) and $_SESSION['prihlasen']==1){ echo "<strong>Přihlášený uživatel</strong>: ".$_SESSION['login'] . " | <a href='logout.php?logout=yes'> Odhlásit se</a>"; }else{ echo "Nejsi přihlášen | <a href='index.php?page=registrace'> Registrace</a> | <a href='index.php?page=login'> Login</a>"; } ?> </div> <?php if (IsSet($_GET['page'])) $soubor=$_GET['page']; $soubor2= dirname($_SERVER['SCRIPT_FILENAME'])."/".$soubor.".php"; if(file_exists($soubor2)) include $soubor2; }else{ include "uvod.php"; } if(isset($_GET['Alert'])){ require "inc/error_msg.php"; $JsAlert=$_GET['Alert']; echo '<script language="javascript" type="text/javascript">alert("'.$Rvi[$JsAlert].'");</script>'; } ?> </div> </div> </body> </html> |
||
Martin011 Profil |
#4 · Zasláno: 8. 7. 2009, 13:13:54
a v souboru protected.php : ale toten kód je jenom pro registrované,
<?php if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){ echo "<h1>Tato stránka je jen pro registrované</h1>"; exit; } ?> |
||
Martin011 Profil |
#5 · Zasláno: 8. 7. 2009, 13:16:58
potom by chyba mohla být ještě v některých ostatních souborech:
tak mám reg_zpracuj.php : <?php ob_start(); if(isset($_POST['sent'])) $jmeno=trim($_POST['jmeno']); $heslo1=$_POST['heslo']; $heslo2=$_POST['heslo_znovu']; $mail=trim($_POST['mail']); $web=trim($_POST['web']); if($jmeno=="" or $heslo1=="" or $mail=="") echo "Nebyly vyplněny všechny povinné údaje!"; }else{ require "db.php"; $PocetStejnych=mysql_result(mysql_query("SELECT COUNT(*) FROM `uzivatele` WHERE `jmeno`='$jmeno' OR `mail`='$mail'"),0); if($PocetStejnych!=0) echo "Zadané jméno nebo email je již používán někým jiným!!!"; }elseif($heslo1 != $heslo2) echo "Zadané hesla se neshodují!!!"; }else{ $heslo=md5($heslo1); if($web=="http://" or $web=="") $web=""; } $VlozData=mysql_query(" INSERT INTO uzivatele (`jmeno`,`heslo`,`mail`,`web`,`prava`) VALUES ('$jmeno', '$heslo', '$mail', '$web', '0') ") or die (mysql_error()); if($VlozData){ echo "Data byla uložena"; } } } }else{ echo "Nebyl odeslán formulář"; } echo "<a href='index.php'>index</a>"; header ("Location: index.php"); ob_end_flush(); ?> |
||
Martin011 Profil |
#6 · Zasláno: 8. 7. 2009, 13:17:46
potom ještě samostatný formulář pro registraci, samostatný formulář pro login a toť vše
|
||
Mastodont Profil |
#7 · Zasláno: 8. 7. 2009, 13:17:55
V tom souboru protected.php musíš mít session_start() taky.
Zkusil bych před header("location: $bl"); dát ještě session_write_close(); |
||
Martin011 Profil |
#8 · Zasláno: 8. 7. 2009, 13:30:49
takže kód protected.php by vypadal takto?
<?php session_start(); ?> <?php if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){ echo "<h1>Tato stránka je jen pro registrované</h1>"; exit; } ?> |
||
Mastodont Profil |
#9 · Zasláno: 8. 7. 2009, 13:34:03
<?php session_start(); if(!isset($_SESSION['prihlasen']) and @$_SESSION['prihlasen']!=1){ echo "<h1>Tato stránka je jen pro registrované</h1>"; exit; } ?> |
||
Martin011 Profil |
#10 · Zasláno: 8. 7. 2009, 13:36:28
vyzkoušel jsem i dát session_write_close(); před header("location: $bl"); ,ale pořád se nic neděje.
|
||
Martin011 Profil |
#11 · Zasláno: 8. 7. 2009, 13:43:31
ještě mám tenhle kód: logout.php
<?php ob_start(); // odhlaseni autora if(IsSet($_GET['logout']) and $_GET['logout']=="yes") { Session_Start(); // Pokud chceme pracovat se session, musíme je "nastartovat". I pokud je chceme zničit. Session_Destroy(); // Zničíme sessions } header ("location: index.php?Alert=7"); // přesměrujeme na index ob_end_flush(); ?> |
||
Martin011 Profil |
#12 · Zasláno: 8. 7. 2009, 13:45:10
představoval bych si to nějak, jak to je: http://pecan.cz/ukazky/registrace/index.php?page=login, mohl byste mi prosím vás napsat či naznačit, jak byste to udělal vy. Děkuji mockrát
|
||
Martin011 Profil |
#13 · Zasláno: 8. 7. 2009, 14:00:30
problém je vyřešen
|
||
Martin011 Profil |
#14 · Zasláno: 8. 7. 2009, 14:02:26 · Upravil/a: Martin011
díky moc za pomoc, už to funguje, chyba byla právě v session.
|
||
Časová prodleva: 15 let
|
0