Autor Zpráva
Routh
Profil *
Dobrý den, z netu jsem si sehnal jak dát dohromady registrace a přihlášení, zakomponoval jsem to do sebe, nastavil podmínky a funguje, přihlásím se na obsah který je určen jen přihlášeným. Jen to chci mít vychytané a pokud zadám špatně login, aby mi to vypsalo někde chybu, ale jelikož kód je rozkouskovaný do souborů, tak se mi to nepodařilo.
Zkoušel jsem formulář se skriptem i logoutem dát do jedné stránky, jenže to pak nešel volat logout (nebo to nevím), dobře to by nevadilo nešel by logout, ale zarazilo mě pokud jsem pod formulář dal echo proměné, která se uložila pod podmínkou špatných údajů, že při:" $off = "Špatné údaje"; " mi vůbec strának nenaběhla, browsery FF, IE i Opera nenavázala spojení jen kvulí tomuto. Pokud víte jak na to, přez nějakou funkci, budu rád když poradíte. Jinak kdyby se našel ochota co by mi na tom základ vysvětlil, byl bych moc vděčný, páč z návodů ne a né tomu přijít na kobylku.

index.php
Obsah + podmínka na postranní panel
<? 

  if($_SESSION['prihlaseni']== 1){
  include('admin_panel.php');
  } else {
  include('login.php');
  }

?>  

tyto podmínky mám v obou souborech pro obsah: novinky a kontakt, prozatím řeším jen podmínkou přihlášení, dále podle práv. (až tohle zmáknu)

includovaný login.php
 <form action="login_zpracuj.php" method="post">
                    <tr><td>&nbsp;</td></tr>                   
	                  <tr>
                    <td><input type="text" name="nick"></td>
                    </tr>                  
                    <tr>
                    <td><input type="password" name="heslo"></td>
                    </tr>                                
                    <tr>
                    <td><input type="submit" name="submit" value="Přihlásit">&nbsp;
                    <a href="index.php?s=registrace">Registrace</a></td>
                    </tr> 
                    <tr>
                    <td>                 
<!--- ZDE bych chtěl vypisovat hlášku špatných údajů --->                                         
                    </td>
                    </tr>             
</form>


login_zpracuj.php
<?php
  session_start(); 
include "connect.php";
    
$login = $_POST["nick"];    
$heslo = $_POST["heslo"];  
$md5heslo = md5($heslo);    
              
$dotaz = mysql_query("select * from uzivatele where login = '$login' and heslo = '$md5heslo'");    
$overeni = mysql_num_rows($dotaz);  
$row = mysql_fetch_array($dotaz); 

    $_SESSION['prihlaseni'] = 1;
   
if($overeni == 1) {   
    
    $_SESSION['login'] = $login;  
    $_SESSION['id'] = $row["id"]; 
 
    header("Location: index.php?s=news"); 
 
  die();
} else { 
  header("location: logout.php"); 
 
} 
?>  


a logout.php
<?php
session_start();
session_destroy();
header("location: index.php");
?>
tiso
Profil
login_zpracuj.php riadok 25 zmeň na
header("location: index.php?error=bad_login");

login.php riadok 15 zmeň na
<?php if(isset($_GET['error']) AND $_GET['error'] == bad_login){echo 'nesprávné meno nebo heslo';} ?>
joe
Profil
tiso
Nechybí ti tam náhodou uvozovky/apostrofy?

$_GET['error'] == 'bad_login'


Mimo to, raději to doporučuju ukládat do sessions (pokud fungují :-))
tiso
Profil
joe: chýbajú
fuckin
Profil
proc by nefungovali kdyz s nema pracuje? Pres get je to nejidealnejsi, takze souhlasim s Tisem.
tiso
Profil
fuckin: - som tiso, nie Tiso
Routh
Profil *
Mno udělla jsme to, ale radši byhc to řešil asi sessionami, když už je tam mam, jinak toto řešení skrze GET nefunguje, i přes špatné údaje to příhlásí :-D
on-line verze ZDE s GET.
tiso
Profil
Routh: $_SESSION['prihlaseni'] = 1; si daj až do vnútra if, a do else si daj $_SESSION['prihlaseni'] = 0;
joe
Profil
tiso
Já si všiml, jen bych se teď u PHP ničemu nedivil :-)

fuckin
Protože asi sis nevšiml, ale já tu zakládal dvě diskuse na téma, že mi nefungují, proto jsem to tam prřipsal
Se sessions je ta výhoda, že nemusí být v url nic navíc a celkově to řešení se mi líbí víc.

Routh
Před přesměrování (header) dáš řádek třeba $_SESSION['prihlaseni'] = false; jak píše tiso.
A pak na místě, kde je máš vypsat vložíš kód

<?php if(isset($_SESSION['prihlaseni']) AND $_SESSION['prihlaseni'] === false){echo 'nesprávné meno nebo heslo'; unset($_SESSION['prihlaseni']); } ?>
Routh
Profil *
A co stím přesměrováním s funkcí GET ?
<?php  if(isset($_GET['error']) AND $_GET['error'] == 'bad_login'){echo 'nesprávné meno nebo heslo';} ?>

Mohl by tu prosím někdo napsat co to má udělat ? po bodech ? Pak to z toho pochopím, Díky.
tiso
Profil
Routh: veď som ti to napísal v [#2]
Routh
Profil *
Díky moc, už to funguje, projdu si to, snad to pochopím :-) asi budu googlit, a jinak co říkáte na ten kód ? Dal by jse použít ještě s právy ? Nebo je to nejprimitivnější řešení nezabezpečené ? Díky za Vaše rady a nápady.

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: