Autor Zpráva
Vilak
Profil
Dobrý den.
Mám vytvořenou MYSQL databázi a v ní tabulku users, kde mám jméno, login, heslo a rank.
Tyto informace se vloží do tabulky při registraci uživatele. U přihlášení využívám pouze login a heslo a nevím, jak mám vytáhnout do nějaké proměnné rank k danému loginu (jménu). bohužel s PHP/MYSQL moc dobře neumím a s tímto jsem začátečník.
Registrace i login mi funguje.
tedy aby když se uživatel přihlásí na svůj účet, tak aby se k tomu dokázal přiřadit rank daného uživatele. Doufám, že chápete, jak to myslím. Pokud jsem to napsal do špatné sekce, tak se omlouvám. Nejsem si jistý, jestli to patří do php či MYSQL.
Za veškeré rady budu rád :)
Fisir
Profil
Reaguji na Vilaka:
Jakým způsobem získáváš data při přihlašování z databáze? (Ukaž kód.)
Vilak
Profil
Moc tomu nerozumím a dělám to podle návodu, proto je možné, že už to tam někde mít asi budu, ale nedokážu to z tama moc dobře vyčíst.
Myslíte to, jak získávám/ověřuji data z databáze, když se uživatel přihlašuje? Pokud ano, tak tady to je:
přihlášení v menu.php
echo "
             <h1>Přihlaste se</h1>
            <form action=\"overeni.php\" method=\"POST\">
                <div><label for=\"login\">login:</label></div>
                <div><input type=\"text\" name=\"login\"></div>

                 <div><label for=\"heslo\">Heslo:</label></div>
                 <div><input type=\"password\" name=\"heslo\"></div>

                <div><input type=\"submit\" name=\"go\" value=\"Přihlásit se\"></div>
            </form>
            ";
                     
        echo "<p>Ahoj návštěvníku. Pro zobrazení celých stránek se musíš <b>přihlásit</b>.</p>";        
        echo '<p>Pokud ještě nejsi zaregistrovaný, můžeš se <span class="back"><a href="registration.php">zaregistrovat</a></span>!</p>'; 
        //ověřujeme zda proměnné jméno a id jsou prázde nebo ne
            if(!empty($_SESSION['name']) && !empty($_SESSION['id'])) {
             echo "<p><a href=\"".$_SERVER['PHP_SELF']."?action=odhlasit_se\">Odhlásit se</a></p>";
            }
            else {
                echo "";
            }
a potom overeni.php
<?php
session_start();
//Celý postup funguje na sessions. Právě v session se ukládají data uživatele, zatímco se nacházi na stránkach. Je důležite spustit sessions na začátku stránky!  
 
if(isset($_POST['go'])){
//jestli tlačítko bylo zmačknuté tak jdi dál, jinak budete přesměrování na stránku pro registraci nového uživatele
    
    if(isset($_POST['login']))
    {
        $login = stripslashes(htmlspecialchars(trim($_POST['login'])));
        if($login == '')
        {
                unset($login);
        }
    }
//uložime do proměnné $login login, který uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


    if(isset($_POST['heslo']))
    {
        $heslo = stripslashes(htmlspecialchars(trim($_POST['heslo'])));
        if($heslo == '')
        {
                unset($heslo);
        }
    }
//uložime do proměnné $heslo heslo, které uživatel zadál ve formuláři, 
//a hned ji ošetříme několika funkcemi, aby ani tagy ani skripty nefungovali a odstraníme mezery ( trim ) 
//Jestli je proměnná prázdna tak ji odstraníme.


//V případě, že jakákoli proměnná je prázdna, zastavíme skript a zobrazime hlášení        
    if(empty($login) or empty($heslo))
    {
        exit("Vyplňte všechna pole");
    }

//Vložíme soubor s připojením k databázi. ( musí se nacházet ve stejné složce )        
    require_once 'db.php';

//Ověřime, zda máme záznam v tabulce s zadaným loginem    
    $q1 = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."'");
    if(!$q1) { echo mysql_error() . ' - ' . mysql_errno(); }
    else {
        if(mysql_num_rows($q1)==1){
//V případě, že máme, vložime id tohoto uživatele do pole
            
            $r1 = mysql_fetch_assoc($q1);
//A vybereme data z tabulky s tímto id a ověřime, zda je správně zadané heslo
            
            $q2 = mysql_query("SELECT * FROM `users` WHERE `id`='".$r1['id']."' AND `pass`='".$heslo."'");
            if(!$q2) { echo mysql_error() . ' - ' . mysql_errno(); }
            else {
//Jestli je všechno správně, tak do sessions uložime identifikator uživatele a jméno, tyto proměnné budou použité v souboru index.php
                $r2 = mysql_fetch_assoc($q2);
                $_SESSION['id'] = $r2['id'];
                $_SESSION['name'] = $r2['name'];
//Budete přesměrování na hlavní stránku
                header("Location: index.php");
            }
        } else {
//Jinak zobrazime hlášení
            exit("Uživatel s tímto uživatelským jménem neexistuje.");
        }
    }
    
} else { header("Location: ".$_SERVER['SERVER_ROOT']."index.php"); }
?>

Myslím, že by to mělo byt něco z tohoto, ale vážně to nedokážu dobře přečíst....
//Ověřime, zda máme záznam v tabulce s zadaným loginem    
    $q1 = mysql_query("SELECT `id` FROM `users` WHERE `login`='".$login."'");
    if(!$q1) { echo mysql_error() . ' - ' . mysql_errno(); }
    else {
        if(mysql_num_rows($q1)==1){
//V případě, že máme, vložime id tohoto uživatele do pole
            
            $r1 = mysql_fetch_assoc($q1);
//A vybereme data z tabulky s tímto id a ověřime, zda je správně zadané heslo
            
            $q2 = mysql_query("SELECT * FROM `users` WHERE `id`='".$r1['id']."' AND `pass`='".$heslo."'");
            if(!$q2) { echo mysql_error() . ' - ' . mysql_errno(); }
            else {
//Jestli je všechno správně, tak do sessions uložime identifikator uživatele a jméno, tyto proměnné budou použité v souboru index.php
                $r2 = mysql_fetch_assoc($q2);
                $_SESSION['id'] = $r2['id'];
                $_SESSION['name'] = $r2['name'];
//Budete přesměrování na hlavní stránku
                header("Location: index.php");
            }
        } else {
//Jinak zobrazime hlášení
            exit("Uživatel s tímto uživatelským jménem neexistuje.");
        }
    }
Fisir
Profil
Reaguji na Vilaka:
Pod
//Jestli je všechno správně, tak do sessions uložime identifikator uživatele a jméno, tyto proměnné budou použité v souboru index.php
$r2 = mysql_fetch_assoc($q2);
$_SESSION['id'] = $r2['id'];
$_SESSION['name'] = $r2['name'];
doplň
$_SESSION['rank'] = $r2['rank'];

K ranku uživatele potom můžeš přistupovat skrze proměnnou (session) $_SESSION['rank'].
Vilak
Profil
Super! Funguje! Díky moc ;) Netušil jsem, že je to takto primitivní :)

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