Autor Zpráva
amorekj
Profil
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
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"; 
Ak dôjde k chybe, tak druhý príkaz sa nikdy nevykoná... Ale aj to prečo robíš to query mi uniká...

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
Jak bys to teda utvořil?
Camo
Profil
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 *
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>';
}
?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0