« 1 2
Autor Zpráva
Neas
Profil
jestli chceš přidat další hodnosti, stačí tam vklínit další elseif klauzule, nebo to celé nahradit switchem:
switch($_SESSION['prava'])
{
   case 0:
     foo(); //uzivatel
     break;
   case 1:
     foo(); //admin
     break;
   case 2:
     foo(); //moderator
     break;
   default:
     foo(); //neprihlaseny uzivatel
}
davidmyska
Profil
ještě mám dva malé dotazy a jeden nesouvisející:
1. Co znamená to foo()?
2. do čeho mám vložít ten tvůj kód do scriptu nebo php?
3. A jak se dělá to označení (viz #25)?
jenikkozak
Profil
davidmyska:
Bez znalosti základů PHP se na to raději vykašli.

1. Co znamená to foo()?
Část skriptu, která se provede určité hodnosti.

2. do čeho mám vložít ten tvůj kód do scriptu nebo php?
Že by do PHP skriptu?

3. A jak se dělá to označení (viz #25)?
Na jaké označení se ptáš?
davidmyska
Profil
myslím to orámování části textu
jenikkozak
Profil
davidmyska:
Vzniká tady na diskusi tak, když v kódu (Ctrl + E) použiješ tučnost (Ctrl + B).
davidmyska
Profil
já nemyslím vkládání kódu ale označování části kódu rámečkem
jenikkozak
Profil
Navrhuji udělat následující kroky:
1) Zajít na hřiště.
2) Začít psát nový příspěvek.
3) Vložit do něj nějaký text, označit jej jako kód.
4) Část textu označeného jako kód ztučnit.
5) Radovat se z úspěchu.

Nebo:
1) Tady vložit do nového příspěvku kus kódu.
2) Přidat do kódu tučnost.
3) Kliknout na Ukázat náhled.
4) Radovat se z úspěchu.
5) Raději to zase smazat.
davidmyska
Profil
díky už jsem i tu tvou předchozí zprávu pochopil
davidmyska
Profil
nějak mi to pořád nechce jet dal jsem tam toto a nejede:
<?php
switch($_SESSION['prava'])
{
   case 0:
     echo "Přihlášen";
     break;
   case 1:
     echo "Admin";
     break;
   default:
     echo "Nepřihlášen";
}
?>
i když se přihlásím na admina nebo nikdo není přihlášen píše to pořád "Přihlášen"
jenikkozak
Profil
davidmyska:
Uvedný kód je pouze pátým článkem řetězu. Před tímto kódem musíš údaj o právech uložit do SESSION (4. krok), před tím je musíš vylovit v databázi (3. krok), před tím je v té databázi mít a nejprve je tam vložit. Máš předchozí kroky splněné?
davidmyska
Profil
1 a 2 mám do databáze se automaticky vkládá "0"
3 připojení k databázi tam je ale jestli i k tabulce to nevím
4 to asi ne tady je skoro celý kód index.php (vynechal jsem pouze nepotřebné html části):
<?php
$path = "/";  // máte-li stránky v rootu, nechte bezezměny, pokud je provozujete v nějakém podadresáři, zadejte jeho jméno
              // např. stránky mám na moje-domena.cz/adresar/, tak zadám $path = "/adresar/";

// funkce pro ošetření vstupních dat od uživatele
// viz http://cz.php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc
function gpc_addslashes($str)
{
    return get_magic_quotes_gpc() ? $str : mysql_real_escape_string($str);
}

include "db.php"; // soubor db.php zajistí připojení k databázi a výběr databáze, se kterou pracujeme
session_start();  // tohle je nezbytné a je nutné uvést tuto funkci na všech stránkách, kam se přihlášený uživatel dostane
                  // možnost nastavit automatické spouštění session_start() nechávám stranou

// zjistíme, co chce uživatel dělat
if (isset($_SESSION['username']) && isset($_GET['logout']))
{
    // uživatel je přihlášen a chce se odhlásit, takže smažeme údaje o přihlášení
    $_SESSION = array();
    if (isset($_COOKIE[session_name()]))
    {
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_unset();
    session_destroy();
    // a přesměrujeme na index.php
    header("location:http://".$_SERVER['SERVER_NAME'].$path."index.php", TRUE, 303);
    exit;
}
elseif (isset($_SESSION['username']))
{  

    //session_regenerate_id(); // ochrana před session fixation, lze vynechat
    // uživatel je přihlášen a nechce se odhlásit, zde zobrazíme obsah pro registrované
    // můžeme využit include apod.

    // tohle informuje uživatele, že je přihlášen a vypíše odkaz pro odhlášení
    // můžeme to ale přemístit do includovaného souboru (kam se nám hodí)
    echo "<p>Přihlášen/a: $_SESSION[username] <a href=\"http://".$_SERVER['SERVER_NAME'].$path."index.php?logout=1\">odhlásit</a></p>\n";
}
else
{
    // uzivatel není přihlášen
    // pokud odeslal přihlašovací údaje, snaží se přihlásit
    if (isset($_POST['username']) && isset($_POST['password']))
    {
        // ošetříme vstupní údaje od uživatele
        // funkce trim() má význam hlavně u hesla, ořeže bílé znaky (např. mezery) na začátku a konci řetězce
        $username = gpc_addslashes(trim($_POST['username']));
        $password = gpc_addslashes(trim($_POST['password']));

        // zjistíme, jestli je v databázi daný uživatel a jestli se prokazuje platným heslem
        // více o ukládání hesel, např. o tzv. solení, najdete na http://php.vrana.cz/ukladani-hesel.php
        $result = mysql_query("SELECT COUNT(*) FROM users WHERE username = '$username' AND password = sha1('$password')");

        if (mysql_result($result, 0))  // předpokládáme, že dotaz proběhl úspěšně, pokud ne, bude stejně vráceno false
                                       // true (a splnění podmínky) nastane pouze tehdy, když v databázi existuje správná kombinace uživatelského jména a hesla
        {
            // uložíme potřebné SESSION proměnné
            $_SESSION['username'] = $username;
            $_SESSION['cas_prihlaseni'] = time(); // čas, kdy se uživatel přihlásil, pozor, nejedná se o čas poslední akce, nevím, jestli ho využijete, může být smazán

            // po přihlášení uživatele přesměrujeme na index.php
            header ("location:http://".$_SERVER['SERVER_NAME'].$path."index.php", TRUE, 303);
            exit;  // aby bylo pravidlům učiněno zadost, zde stejně končí podmínka a jiná nemůže být splněna
        }
        else
        {
            // uživatel zadal neplatné přihlašovací údaje
            // přesměrujeme ho na login.php a zobrazíme chybovou hlášku
            header ("location:http://".$_SERVER['SERVER_NAME'].$path."index.php?incorrect_login=1", TRUE, 303);
            exit;
        }
    }
    else
    {
      // uživatel není přihlášen a ani neodeslal přihlašovací formulář, tak mu ho zobrazíme
      echo "<div>";

      if (isset($_GET['incorrect_login']))
      {
          echo "<p style=\"color: #F00\">Zadali jste neplatné uživatelské jméno nebo heslo</p>\n";
      }
      // zobrazíme formulář pro přihlášení
      ?>
      <a href="registrace.html">registrace</a><br> 
      <form action="index.php" method="post">
        Jméno:  <input name="username" type="text"><br>
        Heslo: <input name="password" type="password"><br>
        <input name="submit" type="submit" value="Přihlásit">
      </form>
      </div>
      <?php
    }
}
?>
a pak někde v html kódu:
<?php
switch($_SESSION['prava'])
{
   case 0:
     echo "Přihlášen";
     break;
   case 1:
     echo "Admin";
     break;
   default:
     echo "Nepřihlášen";
}
?>
a pak se chci zeptat jestli tato část tam může být vícekrát
jenikkozak
Profil
davidmyska:
a pak se chci zeptat jestli tato část tam může být vícekrát
Kromě definicí funkcí můžeš většinu věcí mít víckrát. Ale pokud budeš takový kód zase kopírovat někdy někam na diskusi, tak jej zkrať.

Proč sem dáváš kilometr komentářů v tom kódu?
Přidej do svého kódu ty části, které jsou zvýrazněné na předchozí straně v 25. příspěvku (jak jsi tam obdivoval to zvýraznění).
davidmyska
Profil
Stále mi to píše "přihlášen"
Neas
Profil
ve scriptu, který si zde teď uvedl, nikde nevidím přiřazení nějaké hodnoty do proměnné $_SESSION['prava'] (tak, jak jsem ti radil v příspěvku 25). switch pak pravděpodobně vrací false (ekvivalentní s nulou, která vypisuje "přihlášen").
davidmyska
Profil
já jsem to vyřešil naknec s takto:
elseif (isset($_SESSION['username']))
{  
    echo "<p>Přihlášen/a: <b>$_SESSION[username]</b> <a href=\"http://".$_SERVER['SERVER_NAME'].$path."index.php?logout= \">odhlásit</a></p>";
     
     if ($username == admin){
     echo "Admin";
     }
else {
     echo "Přihlášený";
     }
     
}
a kvůli tomo že je to v podmínce elseif (isset($_SESSION['username'])) tak se tento obsah zobrazuje pouze přihlášeným a pak rozlišuje jestli se jedná o admina nebo ne
ale i tak díky za snaho já vím že se mnou je to těžké
kaja
Profil
dotaz! Jak vytvořím databázi uživatelů ?
Davex
Profil
Vytvoříš tabulku v databázi.
« 1 2

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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