Autor | Zpráva | ||
---|---|---|---|
amorekj Profil |
#1 · Zasláno: 22. 12. 2011, 16:54:54
Dobrý den,
jak řešil případ, kdy spojím dvě podmínky. 1. Pokud zadá u přihlašování špatné přihlašovací údaje, vyleze chyba 2. Pokud je přihlášen, login zmizí a jeho chybné hlášky neplatí. Pokud není přihlášen, platí podmínka jedna. Prosím upravte můj dosavadní nefungující skript - nezobrazí nic, i když je někdo přihlášen či odhlášen (nepřihlášen): <? require_once 'db1676.php'; @$vysl = mysql_query ("SELECT * FROM reg") or die (mysql_error()); if(!$vysl): echo"Chyba1"; error_reporting(0); break; endif; $zaznam = mysql_fetch_array ($vysl); if (isset($_SESSION['prihlaseni']) and $_SESSION['prihlaseni'] != "1"){ echo '<h2 class="nadpis-pravy-sloupec-prvni">Přihlášení</h2>'; //--- session_start(); @$vysledek = mysql_query ("SELECT * FROM reg WHERE prezdivka ='".addslashes($_POST['prezdivka'])."' and heslo ='". md5($_POST['heslo'])."' and overeni=1") ; if(!$vysledek): echo"Chyba1"; error_reporting(0); endif; $zaznam = mysql_fetch_array($vysledek ); if (isset($_POST['Odeslat'])){ if (isset($zaznam['prezdivka'])){ $_SESSION['prihlaseni'] = "1"; $_SESSION['j_1']= addslashes($_POST['prezdivka']); $_SESSION['h_1']= md5($_POST['heslo']); } else { echo '<ul class="seznam-pravy-sloupec"><li>Špatná <strong>přezdívka</strong> nebo <strong>heslo</strong></li><li>Váš účet <strong>nebyl</strong> dosud <strong>ověřen</strong>. <em>(Vyčkejte prosím na email o potvrzení Vaší registrace.)</em></li></ul>'; }} //--- echo' <table class="prihlaseni"> <form action="" method="POST"> <tr> <td>Přezdívka: </td><td><input name="prezdivka" type="text" maxlength="20" value=""></td> </tr> <tr> <td>Heslo: </td><td><input name="heslo" type="password" maxlength="50"></td> </tr> <tr> <td></td><td><input name="Odeslat" type="submit" value="Přihlásit se"></td> </tr> </form> </table> <ul class="seznam-ukonceni-pravy-sloupec"> <li><strong><a href="/registrace" title="Registrovat se">Registrovat se</a></strong></li> </ul> ';} elseif (isset($_SESSION['prihlaseni']) and $_SESSION['prihlaseni'] == "1"){ echo ' <h2 class="nadpis-pravy-sloupec-prvni">Členské menu</h2> <ul class="seznam-ukonceni-pravy-sloupec"> <li>Seznam uživatelů</li> <li>Odhlásit se</li> <ul> '; } ?> Děkuji za Vaše nápady |
||
Camo Profil |
#2 · Zasláno: 22. 12. 2011, 17:59:30
Máš to strašne napísané... Neviem či je to jeden script alebo dva. Ak je to jeden, tak načo robíš query, keď vieš že session je 1.
1. Toto nedáva zmysel: @$vysl = mysql_query ("SELECT * FROM reg") or die (mysql_error()); if(!$vysl): echo"Chyba1"; 2. Testuješ session ale session_start nikde resp. o tri riadky nižšie. 3. Miešaš endif/} - blbo sa to číta... .... Logika je taká, že ak je session 1, tak usera necháš na pokoji a ak nieje tak mu zobrazíš formulár. |
||
amorekj Profil |
#3 · Zasláno: 22. 12. 2011, 19:04:34
Jak bys to teda utvořil?
|
||
Camo Profil |
#4 · Zasláno: 22. 12. 2011, 20:11:14
Ja ti odporúčam si o tom niečo naštudovať v knihe. Za teba to písať nebudem. Ak dáš kód tak sa dá nájsť chyba, ale štýl "urobte to za mňa" je mi proti srsti.
Postup je celkom logický: 1.Session_start() 2. if: zistíš či je nastavené post-prihlásenie, ak hej tak to overíš a nastavíš/nenastavíš session-prihlasenie 3. if: zistíš či je nastavené session-prihlásenie a presmeruješ/includuješ čo potrebuješ... 4. else: inak zobrazíš prihlasovací formulár |
||
Lorem Profil * |
#5 · Zasláno: 23. 12. 2011, 15:56:24
Toto by ti mělo pomoct. Psala jsem to sice narychlo tak tam možná někde bude chybička ;)
<?php session_start (); require ('cnf/config.php'); require ('cnf/common.php'); require ('cnf/functions.php'); $mysql_conn = @mysql_connect ($mysql_server,$mysql_user,$mysql_password); $mysql_db = @mysql_select_db ($mysql_database); if ($mysql_conn && $mysql_db) { if($_SESSION['admin']['logined'] == 1) { $_SESSION['admin']['logined'] = 1 require 'pages/logined.php'; } else { if(isset($_REQUEST['login']['nick']) && isset($_REQUEST['login']['pass'])) { if(!$_REQUEST['login']['nick']) { $error = 'Zadejte prosím své uživatelské jméno'; require 'login/login_table.php'; } elseif(!$_REQUEST['login']['pass']) { $error = 'Zadejte prosím své heslo'; require 'login/login_table.php'; } elseif(strlen($_REQUEST['login']['nick'])<=2) { $error = 'Uživatelské jméno musí obsahovat alespoň 3 znaky'; require 'login/login_table.php'; } elseif(strlen($_REQUEST['login']['pass'])<=4) { $error = 'Uživatelské jméno musí obsahovat alespoň 5 znaků'; require 'login/login_table.php'; } else { mysql_query ('SET NAMES utf8'); setlocale (LC_ALL,'cs_CZ'); $verification = mysql_fetch_array(mysql_query('SELECT * FROM list_users WHERE nick=\''.stripslashes($_REQUEST['login']['nick']).'\' AND pass=\''.stripslashes(md5($_REQUEST['login']['pass'])).'\'')); if($verification['nick'] && $verification['pass']) { $_SESSION['admin']['logined'] = 1; require 'pages/logined.php'; } else { $error = 'Špatné přihlašovací údaje'; include ('login/login_table.php'); } } } else { $error = 'Zadejte prosím své přihlašovací údaje'; require 'login/login_table.php'; } } } else { echo '<p>Nastal problém s připojením k databázi</p>'; } ?> |
||
Časová prodleva: 12 let
|
0