Autor Zpráva
DeeJay
Profil *
čau, mám problém ohledně odhlašování vždycky když dám F5 odhlásí mě to z mého webu. Nevím vubec proč.
http://kfc-gaming.eu/testgame/
jenikkozak
Profil
DeeJay:
Máme si příčinu jen tipovat, nebo nám poskytneš i nějaký skript na přihlašování a odhlašování?
DeeJay
Profil *
prihlaseni.php
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-type" content="text/html" charset="windows-1250">
<meta http-equiv="Content-Style-Type" content="text/css">
<div style="display:none"><endora></div>

<?php
    //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to
    if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) {
        echo '<ul type="I">';
        foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) {
            echo '<li>',$zpr,'</li>'; 
        }
        echo '</ul>';
        unset($_SESSION['ERROR_ZPRAVA']);
    }
    
    
    //Registrace úspěšná a ostatní
    $zpr = array('registrace-uspesna' => 'Byl/a jsi úspěšně zaregisrován/a. Nyní se můžeš pihlásit.',
    'prihlaseni-selhalo' => 'Přihlášení selhalo. Prosím, zkontroluj zadané údaje.',
    'automaticke-odhlaseni' => 'Byl/a jsi neaktivní déle jak 30 minut. Byl/a jsi automaticky odhlášen/a.',);
    //Jestliže jseme dostali "z" tak řekneme obsah arraye
    if($_GET['z']){
     echo "".$zpr[$_GET['z']]."";
    }else{
     echo "";
    }
?>
<form action="zprihlaseni.php" method="post">
<table>
<tr>
  <td>Nick: </td><td><input type="text" name="nick"></td>
  <td>Heslo: </td><td><input type="password" name="heslo"></td>
  <td>&nbsp;</td><td align="right"><input type="submit" name="Submit" value="Přihlásit se"></td>
</tr>
</table>
</form>

autentizace.php


<?php
    //Nastartování session
    session_start();
    //Jestliže není zadaný v session id hodí vás to na prihlaseni.php 
    if(!isset($_SESSION['ID']) || (trim($_SESSION['ID']) == '')) {
        header("location: prihlaseni.php?z=automaticke-odhlaseni");
        exit();
    }
?

jsemPrihlasen.php

<!--ČEŠTINA-->
<meta http-equiv="Content-type" content="text/html" charset="windows-1250">
<meta http-equiv="Content-Style-Type" content="text/css">
<!--ČEŠTINA-->

<!--ADVERT OFF-->
<div style="display:none"><endora></div>
<!--ADVERT OFF-->
<?require_once('autentizace.php'); //Velice důležité (kdyby to tu nebylo, mohl by sem nepřihlášený uživatel)?>
<font color="#00ff00"><p><strong>Vítej </strong><b><?echo $_SESSION['NICK']?>.</b> <br><font color="#00ff00">Na kontě máš: </font><font color="red">0</font> <font color="#00ff00">Temné rudy</font></p></font>
A tady dále pokračuje stránka....
<a href="odhlasit.php">Odhlásit</a>

odhlasit.php


<?php
    //Nastartování session
    session_start();
    //Zničení (unsetnutí) všech dat co jsme uložili do session
    unset($_SESSION['ID']);
    unset($_SESSION['NICK']);
    unset($_SESSION['HESLO']);
    echo "Byl/a jsi úspěšně odhlášen/a";
?>
<a href="prihlaseni.php">příhlášení</a> | | | <a href="">hlavní stránka</a

registrace.php

<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<meta http-equiv="Content-type" content="text/html" charset="windows-1250">
<meta http-equiv="Content-Style-Type" content="text/css">
<div style="display:none"><endora></div>

<?php
    //Pokud uživatel nějaké políčko nevyplnil, sdělíme mu to
    if( isset($_SESSION['ERROR_ZPRAVA']) && is_array($_SESSION['ERROR_ZPRAVA']) && count($_SESSION['ERROR_ZPRAVA']) >0 ) {
        echo '<ul type="I">';
        foreach($_SESSION['ERROR_ZPRAVA'] as $zpr) {
            echo '<li>',$zpr,'</li>'; 
        }
        echo '</ul>';
        unset($_SESSION['ERROR_ZPRAVA']);
    }
?>
<form action="zregistrace.php" 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>Heslo znovu: </td><td><input type="password" name="zheslo"></td>
</tr>
<tr>
  <td>&nbsp;</td><td align="right"><input type="submit" name="Submit" value="Registrovat"></td>
</tr>
</table>
</form>


zprihlaseni.php

<?php
    //Nastartování session
    session_start();
    //Vložení config.php
    require_once('config.php');
    $error_zprava = array();
    //Validace pro errory
    $error = false;
    //Připojení k mysql serveru
    $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO);
    if(!$link) {
        die('Nelze se připojit: ' . mysql_error());
    }
    //Zvolíme databázi
    $db = mysql_select_db(SQL_DATABAZE);
    if(!$db) {
        die("Databáze nenalezena");
    }
    //Zabráníme sql injekci
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }
    //Vyčistíme přijaté hodnoty
    $nick = clean($_POST['nick']);
    $heslo = clean($_POST['heslo']);
    //Kontrolujeme, zda uživatel vyplnil všechna pole
      //Kontrola nicku
    if($nick == '') {
        $error_zprava[] = 'Vlož nick!';
        $error = true;
    }
      //Kontrola hesla
    if($heslo == '') {
        $error_zprava[] = 'Vlož heslo!';
        $error = true;
    }
    //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno
    if($error) {
        $_SESSION['ERROR_ZPRAVA'] = $error_zprava;
        session_write_close();
        header("location: prihlaseni.php?z=prihlaseni-selhalo");
        exit();
    }
    //Vytvoříme sql dotaz
    $dotaz="SELECT * FROM uzivatele WHERE nick='$nick' AND heslo='".md5($_POST['heslo'])."'";
    mysql_query("SET character_set_client=utf8");
    mysql_query("SET character_set_connection=utf8");
    mysql_query("SET character_set_results=utf8");
    //Provedeme sql dotaz
    $pdotaz=mysql_query($dotaz);
    
    //Pokud dosud bylo vše úspěšné, zapíšeme údaje do session
    if($pdotaz) {
        if(mysql_num_rows($pdotaz) == 1) {
            session_regenerate_id();
            $uzivatel = mysql_fetch_assoc($pdotaz);
            //Zapisování údajů do session
            $_SESSION['ID'] = $uzivatel['id'];
            $_SESSION['NICK'] = $uzivatel['nick'];
            $_SESSION['HESLO'] = $uzivatel['heslo'];
            session_write_close();
            header("location: ".WEB_START."");
            exit();
        }else {
            //Vše bylo neůspěšné. Přihlášení se nezdařilo
            header("location: prihlaseni.php?z=prihlaseni-selhalo");
            exit();
        }
    }else {
        die("Selhání dotazu");
    }
?>

zregistrace.php

<?php
    //Nastartování session
    session_start();
    //Vložení config.php
    require_once('config.php');
    $error_zprava = array();
    //Validace pro errory
    $error = false;
    //Připojení k mysql serveru
    $link = mysql_connect(SQL_HOST, SQL_UZIVATEL, SQL_HESLO);
    if(!$link) {
        die('Nelze se připojit: ' . mysql_error());
    }
    //Zvolíme databázi
    $db = mysql_select_db(SQL_DATABAZE);
    if(!$db) {
        die("Databáze nenalezena");
    }
    //Zabráníme sql injekci
    function clean($str) {
        $str = @trim($str);
        if(get_magic_quotes_gpc()) {
            $str = stripslashes($str);
        }
        return mysql_real_escape_string($str);
    }
    //Vyčistíme přijaté hodnoty
    $nick = htmlspecialchars(clean($_POST['nick']));
    $heslo = htmlspecialchars(clean($_POST['heslo']));
    $zheslo = clean($_POST['zheslo']);
    $ip = $_SERVER["REMOTE_ADDR"];
    //Kontrolujeme, zda uživatel vyplnil všechna pole
      //Kontrola nicku
    if($nick == '') {
        $error_zprava[] = 'Vyplň nick!';
        $error = true;
    }
      //Kontrola hesla
    if($heslo == '') {
        $error_zprava[] = 'Vyplň heslo!';
        $error = true;
    }
      //Kontrola zopakovaného hesla
    if($zheslo == '') {
        $error_zprava[] = 'Vyplň kontrolu hesla!';
        $error = true;
    }
      //Porovnání zadatných hesel
    if( strcmp($heslo, $zheslo) != 0 ) {
        $error_zprava[] = 'Hesla nesouhlasí!';
        $error = true;
    }
    //Zkontrolujeme, zda již někdo pod tímto nickem není zaregistrován
    if($nick != '') {
        $dotaz = "SELECT * FROM uzivatele WHERE nick='$nick'";
        $pdotaz = mysql_query($dotaz);
        if($pdotaz) {
            if(mysql_num_rows($pdotaz) > 0) {
                $error_zprava[] = 'Nick je již zabrán!';
                $error = true;
            }
            @mysql_free_result($pdotaz);
        }
        else {
            die("Selhání dotazu č1");
        }
    }
    //Pokud je chyba v políčkách, vrátíme uživatele zpět a sdělíme co neměl vyplněno
    if($error) {
        $_SESSION['ERROR_ZPRAVA'] = $error_zprava;
        session_write_close();
        header("location: registrace.php");
        exit();
    }
    //Vytvoříme sql dotaz
    $dotaz = "INSERT INTO uzivatele(nick, heslo, ip) VALUES('$nick','".md5($_POST['heslo'])."','$ip')";
    mysql_query("SET character_set_client=utf8");
    mysql_query("SET character_set_connection=utf8");
    mysql_query("SET character_set_results=utf8");
    //Provedeme sql dotaz
    $pdotaz = @mysql_query($dotaz);
    //Při úspěšné registraci hodíme uživatele na prihlaseni.php?z=registrace-uspesna
    if($pdotaz) {
        header("location: prihlaseni.php?z=registrace-uspesna");
        exit();
    }else {
        die("Selhání dotazu č2");
    }
?>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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