Autor Zpráva
walkerman
Profil
Zdravím ať dělám co dělám nefunguje mi ověření zda-li je přihlášen uživatel, poradil by mi někdo nebo zhotovil script ?
Registrace
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <title>Formulář</title>  
<link href="registrace.css" rel="stylesheet" type="text/css" />    
</head> 
<body>

<?php
  if(isset($_POST["tlacitko"])){
    $nick = $_POST["nick"];
    $heslo = $_POST["heslo"];
    $potvrd_heslo = $_POST["potvrd_heslo"];
    $email = $_POST["email"];
    if($heslo == $potvrd_heslo){
      if($nick AND $email){
        $heslo = md5(md5($heslo));
        include "./config.php";
        $ip = $_SERVER["REMOTE_ADDR"];
        $zapis = mysql_query("INSERT INTO uzivatele SET nick='$nick', heslo='$heslo', email='$email', ip='$ip', opravneni='1' ;");
        echo "Registrace proběhla v pořádku. <a href='hlavni.php'>Pokračujte kliknutím zde </a>";  
      } else {
        echo "Nezadal jsi nick nebo email.";
      }
    } else {
      echo "Hesla nejsou shodná!";
    }
  }
?>

  <p>
  <form action="<?php $PHP_SELF; ?>" method="POST">
    <table>
      <tr><td>Nick: </td><td><input type="text" name="nick" /></td></tr>
      <tr><td>Heslo: </td><td><input type="password" name="heslo" /></td></tr>
      <tr><td>Potvrď Heslo: </td><td><input type="password" name="potvrd_heslo" /></td></tr>
      <tr><td>E-mail: </td><td><input type="text" name="email" /></td></tr>
      <tr><td><input type="submit" name="tlacitko" value="Registrovat" class="submit"/></td></tr>
      </table>
  </form>  
  </p>    </body>
Přihlášení
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <title>Formulář</title>  
<link href="prihlaseni.css" rel="stylesheet" type="text/css" />    
</head> 
<body>
<?php
    if(isset($_POST["tlacitko"])){
      $nick = $_POST["nick"];
      $heslo = $_POST["heslo"];
      $heslo = md5(md5($heslo));
      include "./config.php";
      $dotaz = mysql_query("SELECT * FROM uzivatele WHERE nick='".mysql_real_escape_string($nick)."' AND heslo='$heslo' ;");
                        while($vystup = mysql_fetch_object($dotaz))
                        {
                          $id = $vystup->id;
                          $nickDB = $vystup->nick;
                          $hesloDB = $vystup->heslo;
                          $email = $vystup->email;
                          $opravneni = $vystup->opravneni;
                        }
                     if($nick == $nickDB AND $heslo == $hesloDB){
        $_SESSION["id"] = $id;
        $_SESSION["nick"] = $nick;
        $_SESSION["email"] = $email;
        $_SESSION["opravneni"] = $opravneni;
               echo "Byl jsi přihlášen jako $nick  <a href='hlavni.php'>Pokračujte kliknutím zde </a> nebo se odhlásit zde: <a href='odhlaseni.php'>Odhlásit</a> " ;
      }
    }
  ?>
  <center>
  <p>
    <form action="<?php $PHP_SELF; ?>" method="POST">  
      <table>
           <div> Zadejte své přihlašovací údaje: </div>
           <br>
        <tr><td>Nick:</td><td><input type="text" name="nick" /></td></tr>
        <tr><td>Heslo:</td><td><input type="password" name="heslo" /></td></tr>
    <center>    <tr><td></td><td><input type="submit" value="Přihlásit se" name="tlacitko" class="submit" /></td></tr>
               
    </form>
     <form action="registrace.php" method="POST"> 
        <div><tr><td><br><td><div><a href="registrace.php"> <input type="submit" value="Zaregistrovat" name="tlacitko" class="submit" /> </a></div></div>   </td></tr></center>
            </form>
             </table>
  </p>    
  </center>
             </body>
a hlavní stránka po přihlášení
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <title>Hlavní stránka</title>  
<link href="style.css" rel="stylesheet" type="text/css" />    
<br> <center> <h1><div><a href="hlavni.php"><img src="logo.png" border="0" class="img"></a></div> </h1>        </center>
   <br>    <br><br><br>
<center>
 <!-- Menu -->
 <div id="menu" align="center">
 <a href="hlavni.php">Domů</a> |
 <a href="komentare.php">Komentáře</a> |
  <a href="komentare_vypis.php">Zobrazit napsané komentáře</a> |
 <a href="odhlaseni.php">Odhlášení</a> |

</div> 



</center>
</head> 
<body>

Děkuji všem co se na to podívají, poradí či mi z hotový script.
peta
Profil
Jake chyby to teda pise?
Ktera cast funguje a ktera se neprovede?
Jake jsou hodnoty promennych pred a po?

* Treba muj oblibeny zpusob je kazdy druhy radek echo 1; echo 2; atd. Tak zjistim, ktere echo se mi jeste zobrazi a ktere uz ne. Pak zjistuji proc.
* Vypis promennych je treba
var_dump($promenna); echo '<br>';
* Nevsiml jsem si, ze bys prihlaseni ukladal do session ($_SESSION, session_start). To znamena, ze se prihlaseni kontroluje jen v okamziku odeslani formulare pres $_POST (<form method=post>) a pak uz ne. Pokud se odesle treba jiny formular nebo klikne na odkaz, tak se prihlaseni ztrati, protoze neni ulozeno ani v session.
* U mysql prikazu nemas or die, viz treba example 1 http://cz1.php.net/manual/en/function.mysql-query.php.
* Nemas tam ani error_reporting.
---
A jo, chybka, do $_SESSION pri prihlaseni ukladas (ja koukal na registraci), jen nepouzivas session_start. mozna by bylo fajn obe casti prepsat do funkci a po uspesne registraci uzivatele hnedka prihlasit.
RockFire
Profil
peta:
Jake chyby to teda pise?
Žádné, je potřeba si ten příspěvek přečíst.

walkerman:
1) Určitě všude kde pracuješ se session musíš ještě před doctype umístit <?php session_start(); ?>
2) Kontroluj na každé stránce, kde se kontroluje přihlášení, jestli existuje session, kterou při přihlášení vytváříš.
peta
Profil
RockFire: V prispevku nic o vypisu chyb neni, pouze nefunguje. Ani v php kodu neni error_reporting.
walkerman
Profil
Bohužel jsem to ani trošku nepochopil, nemohl by mi někdo pomoct vytvořit script ?
Fisir
Profil
Reaguji na walkermana [#5]:
Právě ti tu pomáháme.
Na začátek každé stránky, která nějak pracuje s přihlášením nebo registrací dej <?php session_start(); ?>, tím aktivuješ práci se sessions. Na každou stránku, která má být dostupná jen po přihlášení vlož na začátek tento kód:
<?php
session_start();
if(!$_SESSION["nick"]){
   die("Nejste prihlasen!");
};
?>
walkerman
Profil
Fisir:
Ať to zkouším jak chci pořád mi to píše "nejste přihlášen"


Hotovo.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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