Autor Zpráva
Sobky
Profil
Dobrý deň!
Spravil som si stránku, na ktorej sa treba najprv prihlásiť. No a po prihlásení by som chcel aby sa na tej stránke zmenil jej obsah ale link osal taký istý. Viem, že sa to dá, ale neviem ako :/

Tu je skript
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' lang='sk'>
    <head>
        <title>Invite list</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="author" content="SobkyLuckSK">
        <link rel="stylesheet" type="text/css" href="invite.css">
    </head>
<body>
<img class="logo" src="http://www.magicraft.4fan.cz/wp-content/uploads/2014/06/MAGICRAFT-3.png">
<form action="" method="POST">
  <fieldset class="table">
    <legend><p style="font-size: 2em; color: gold; font-weight: bold">Prihlásenie</p></legend>
    <table width="100%">
    <tr>
      <p style="font-size: 0,5em; color: gold; font-weight: bold">Pre prihlásenie použite rovnaké údaje ako k serveru MagiCraft</p>
    </tr>
    <tr>
      <td width="80%"><input type="text" class="nick" name="nick" tabindex="1" size="25" placeholder="Nick"></td>
    </tr>
    <tr>
      <td width="80%"><input type="password" class="heslo" name="heslo" tabindex="2" size="25" placeholder="Heslo"></td>
    </tr>
    <tr>
      <td colspan="4" align="center"><input type="submit" class="tlacitko" value="Prihlásiť" tabindex="3"></td>
    </tr>
    </table>
  </fieldset>
</form>
<?php
$nick = $_POST['nick'];
$heslo = $_POST['heslo'];
$heslicko = "tajne";
if($heslo == $heslicko) {
  header("Location: invite.php");
  echo "Prihlasený"
  exit;
}
?>
</body>
</html>

Od toho <?php už neviem ako
Tomáš123
Profil
Sobky:
S PHP-čkom nedosiahneš dynamiku presmerovania. Na to je JavaScript.

Riadok 25: Načo spájaš 4 stĺpce, keď tabuľka má iba jeden?
Taps
Profil
Tomáš123:
Na to je JavaScript
Respk. se jedná o ajax, viz např. http://jecas.cz/ajax
Sobky
Profil
aha no diki ale ja s javaskriptom neviem nič :D tak ako by to malo asi vyzerať?
David Klouček
Profil
Sobky:
aha no diki ale ja s javaskriptom neviem nič
Správnej čas se ho začít učit JavaScript.

tak ako by to malo asi vyzerať?
Dá se to napsat různě.
jenikkozak
Profil
Já jsem to pochopil trochu jinak než kluci přede mnou.

Jde ti jen o to, aby poté, co uživatel odešle přihlašovací údaje, se nepřesměrovávalo na jinou stránku, ale zůstala zobrazená ta samá adresa?
Na to by totiž JavaScript ani AJAX nebyly potřeba.
Tomáš123
Profil
Sobky:
Možno sa pletiem, ale na vyriešenie toho čo napísal jenikkozak by stačilo dať do <form action="#"...> mriežku, nie?
Taps
Profil
jenikkozak:
ale zůstala zobrazená ta samá adresa?
ano, ale jiný obsah, proto si myslím, že by v tomto případě byl využitelný AJAX
jenikkozak
Profil
Tomáš123:
Nesmysl. I kdyby stránka nevyhazovala parse error kvůli chybějícímu středníku na 35. řádku a nevyhazovala chybu, že se stránka snaží měnit hlavičky poté, co byl prohlížeči odeslán kus HTML, mřížka jako obsah atributu action by se jen připojila k URL po odeslání formuláře, ovšem pak by došlo k přesměrování vyvolanému na řádku 36.
Pokud někdo chce, aby se vyplněný formulář odeslal téže stránce, může action formuláře úplně vynechat.

Taps:
Myslím si, že když se ze skriptu vyhodí přesměrování na řádku 35 a za příkaz na 36. řádku přidá středník, bude zadání splněno i bez AJAXu.
Sobky
Profil
No to čo napísal jenikkozak, že som dal preč ten 35. riadok a na 36 doplnil ; tak sa niečo zmenilo. ale stále tam bol tan istý obsah a ja chcem po prihlásení iný
Taps
Profil
Sobky:
if($heslo == $heslicko) {
echo "Můj tajný obsah";
}
Sobky
Profil
Ale toto napíše pod ten obsah čo mám tu vetu, ja chcem aby sa ten obsah cely zmenil
yFang
Profil
Sobky:
Asi to chceš nějak takhle:
<?php if ($heslo == $heslicko): ?>

<!-- html a obsah tajné stránky -->

<?php else: ?>

<!-- přihlašovací formulář -->

<?php endif; ?>
Fisir
Profil
Reaguji na Sobkyho:
Na úplný začátek souboru vlož:
<?php
if(isset($_POST['heslo'])){
  $heslo = $_POST['heslo'];
  $heslicko = "tajne";
  if($heslo == $heslicko) {
    include('poprihlaseni.php');
    exit();
  }
}
?>
A vytvoř si soubor poprihlaseni.php do kterého vlož obsah, který chceš aby se ti zobrazil po přihlášení. Atribut action přihlašovacího formuláře nech prázdný.
Sobky
Profil
No toto je celkom dobré aj to funguje a potom by sa ako dalo nataviť lebo keď refreshnem stránku tak ma to zase hodí na login a ja chcem aby už potom ostal na tej stránke po prihlasení
jenikkozak
Profil
Potřebuješ tedy na serveru uchovat informaci, že se uživatel již při některém z předchozích načtení stránky přihlásil. K tomu se ti budou hodit session: Sessions.
Sobky
Profil
Tu mám skript
Kamoš mi poradil, že
Do session si ulož něco jako $loggedIn = TRUE; a pak normálně podmínka if ($loggedIn) { (zobrazení formuláře s přihlášením } else { (obsah pro přihlášenýho uživatele }.

A to už neviem, kde mám dať
<?php
///////////////
// NASTAVENI //
///////////////
$db_host         =     "dsasadsad";     // Zde zadej hostitele
$db_uzivatel     =     "adasddsa";          // Zde uživatelské jméno
$db_heslo        =     "sadsasddsa";          // Zde heslo
$db_databaze     =     "asfafsfdsg";        // Zde jméno databáze
$db_tabulka      =     "authme";        // Zde zadej jméno AuthMe tabulky
$hash            =     "SHA256";           // Zde zadej typ šifrování

///////////////
//  SKRIPT   //
///////////////
$mysqli = new mysqli($db_host, $db_uzivatel, $db_heslo, $db_databaze);
if ($mysqli->connect_errno)
{
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit();
}
if (isset($_POST['nick']) && isset($_POST['heslo']))
{
    if (!empty($_POST['nick']) && !empty($_POST['heslo']))
    {
        //Ochrana a tvorba variablů
                $nick = preg_replace('/\s+/', '', $_POST['nick']);
        $heslo = preg_replace('/\s+/', '', $_POST['heslo']);
        $result = $mysqli->query("SELECT password FROM ".$db_tabulka." WHERE username = '".$nick."'");
        $row = $result->fetch_assoc();
        switch ($hash) {
            case 'MD5':
                $heslicko = hash('md5', $heslo) === $row['password']; break;
            case 'SHA1':
                $heslicko = hash('sha1', $heslo) === $row['password']; break;
            case 'SHA256':
                $userPasswordField = explode('$', $row['password']);
                $heslo = hash('sha256', $heslo);
                $heslo .= $userPasswordField[2];
                $heslo = '$SHA$' . $userPasswordField[2] . '$' . hash('sha256', $heslo);
                $heslicko = $heslo === $row['password'];
                break;
        }
        $ip = $_SERVER['REMOTE_ADDR'];
        
        //Ověření nicku
        $query_nick = mysqli_query($mysqli, "SELECT username FROM ".$db_tabulka." WHERE username = '".$nick."'");
        if ($data_nick = mysqli_fetch_array($query_nick))
        {
            //Ověření hesla
            if ($heslicko)
            {
                $_SESSION['uzivatel'] = $nick;
                                // toto neviem ako spraviť
                $loggedIn = TRUE;
                if ($loggedIn)
                {
                    include('login.php');
                    exit();
                }
                else
                {
                    include('login.php');
                    exit();
                }
                
            }
            else
            {
                //Neúspěšné přihlášení
                echo "<div style='color: red;'><strong>Toto heslo není správné.</strong></div>";
            }
        }
        else
        {
            //Neexistující přezdívka
            echo "<div style='color: red;'><strong>Tato přezdívka nebyla nalezena.</strong></div>";
        }
    }
}
?>
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' lang='sk'>
    <head>
        <title>Invite list</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta name="author" content="SobkyLuckSK">
        <link rel="stylesheet" type="text/css" href="invite.css">
        <script type="application/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    </head>
<body>
<img class="logo" src="http://www.magicraft.4fan.cz/wp-content/uploads/2014/06/MAGICRAFT-3.png">
<form action="" method="POST">
  <fieldset class="table">
    <legend><p style="font-size: 2em; color: gold; font-weight: bold">Prihlásenie</p></legend>
    <table width="100%">
    <tr>
      <p style="font-size: 0,5em; color: gold; font-weight: bold">Pre prihlásenie použite rovnaké údaje ako k serveru MagiCraft</p>
    </tr>
    <tr>
      <td width="80%"><input type="text" class="nick" name="nick" tabindex="1" size="25" placeholder="Nick"></td>
    </tr>
    <tr>
      <td width="80%"><input type="password" class="heslo" name="heslo" tabindex="2" size="25" placeholder="Heslo"></td>
    </tr>
    <tr>
      <td colspan="4" align="center"><input type="submit" class="tlacitko" value="Prihlásiť" tabindex="3"></td>
    </tr>
    </table>
  </fieldset>
</form>
</body>
</html>
jenikkozak
Profil
Kdyby sis ten odkázaný návod prošel, udělal bys lépe. Takto máš sice velkolepý skript, o kterém ale netušíš, jak funguje. Takže ho v budoucnu neopravíš ani nedoplníš.
Sobky
Profil
no ano ten php neni môj lebo vôbec neviem ako to spraviť ale ten html som robil ja
Kubo2
Profil
Sobky:
no ano ten php neni môj lebo vôbec neviem ako to spraviť ale ten html som robil ja
To je síce pekné, ale HTML v tomto nehrá žiadnu rolu. Najprv si prosím pozorne prečítaj odkázaný návod.

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