Autor Zpráva
Azhrei
Profil
Používám přihlašování z FAQ zde na webu a potřebuji načtené username a password použít pro výbě dat z DB.


<?php
$path = "/znamky/";  // 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("pripojeni_db.php"); // soubor pripojeni_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."prihlasovani_zaci.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: $_SESSION[username] <a href=\"http://".$_SERVER['SERVER_NAME'].$path."prihlasovani_zaci.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']))
    {
        // 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 zaci WHERE username = '$username' AND password = '$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: .$path."prihlasovani_zaci.php"]http://".$_SERVER['SERVER_NAME'].$path."prihlasovani_zaci.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 index.php a zobrazíme chybovou hlášku
            header ("location: .$path."prihlasovani_zaci.php?incorrect_login=1"]http://".$_SERVER['SERVER_NAME'].$path."prihlasovani_zaci.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í
      ?>
      <form method="post" action="prihlasovani_zaci.php">
        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
    }
}
?>


toto jeincludovaná část pro

<?php
include("p_z.php");

echo" <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN><html><head><title>Untitled</title></head><body>";
?>


<table summary="" border="1">
<tr><td><?
if (isset($_SESSION['username']))
{
print_r($_POST);
$predmet=false;
$vysledek=mysql_query("select jmeno, prijmeni FROM znamky JOIN zaci ON znamky.ID_ZACI=zaci.ID_ZACI JOIN predmety on znamky.ID_predmet=predmety.ID_PREDMET JOIN tridy on zaci.ID_TRIDY=tridy.ID_TRIDY WHERE zaci.username='$_POST[username]' and zaci.password='$_POST[password]'");
                   $zaznam=MySQL_Fetch_Array($vysledek);
                    echo "$zaznam[jmeno] $zaznam[prijmeni]";
                    
                    $vysledek=mysql_query("select jmeno, prijmeni, znamka, predmet FROM znamky JOIN zaci ON znamky.ID_ZACI=zaci.ID_ZACI JOIN predmety on znamky.ID_predmet=predmety.ID_PREDMET JOIN tridy on zaci.ID_TRIDY=tridy.ID_TRIDY WHERE zaci.username='$_POST[username]' and zaci.password='$_POST[password]' order by predmet");
                    while ($zaznam=MySQL_Fetch_Array($vysledek)){
                    
                    if($zaznam[predmet]!=$predmet){echo"<tr><td>$zaznam[predmet]</td></tr>";}
          
                    SetLocale(LC_ALL, "Czech");
                    $datum = Date("j. m. Y", $zaznam[datum]);
                    echo "<tr><td>$datum</td>";
                    
                    if ($zaznam[znamka]==0) {echo "<td>nepsal/a</td></tr>";}
                    
                    else {echo "<td>$zaznam[znamka]</td></tr>";}
                    
                    $predmet=$zaznam[predmet];
                    }    
}    ?>                
</td></tr>
</table>

</body>
</html>



prosím pomozte, chvátá to.
Díky
Alphard
Profil
Nikdy nezakládejte duplicity.
Původní vlákno smažu.

$_POST je prázdné, protože se stránka po příhlášení přesměruje. Username je v session, password si tam můžete dát taky, ale nechápu, k čemu by to bylo dobré.
panther
Profil
Azhrei:
kde v těch několika desítkách řádků kódu je chyba? Proč sem dáváš všechno, i to nepodstatné?

Ve zkratce:
- máš přihlašovací formulář, po jeho odeslání a kontrole s DB si naplníš SESSION
- dále pak je POST prázdný/naplněný jinými daty, jméno žáka je v SESSIONě.
Azhrei
Profil
panther:
pomohlo díky

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