| 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: 14 let
|
|||
0