Autor Zpráva
McBOY
Profil
Ahoj potřebuji nějaký tag na to aby po přihlášení za sekund nebo hned to přehodilo na cc.php nevím jak to udělat aby nemusel klikat!

Díky McBOY.
Plaváček
Profil
McBOY:

Viz Přesměrování stránky.

P.S. A nemusíš používat vykřičníky, když požaduješ radu.
lionel messi
Profil
<?php
header("Location: http://www.cc.php") //prehodí hneď
?>
alebo
<?php
sleep(5); //prehodí po 5 sekundách
header("Location: http://www.cc.php");
?>

Samozrejme, PHP nie je jediná cesta, v príspevku od Plaváčka sú dobre popísané všetky možnosti, ale keďže je dotaz v kategórii PHP, napísal som podľa toho aj riešenie.

Doplnenie: Ešte si treba dať pozor na to, že funkcia header musí byť volaná pred tým, než sa vypíše akýkoľvek výstup: viď Chyba „Headers already sent …“
McBOY
Profil
Děkuji ale mám potíže protože to nefunguje

skript:
        <form method='post'>
    <input type="text" name='nick' placeholder="Nick"><br />
    <input type="password" name='heslo' placeholder="Heslo"><br />
    <button type="submit">Přihlásit!</button><br />
</form>

<?php
///////////////
// NASTAVENI //
///////////////
$db_host         =     "93.91.250.137";     // Zde zadej hostitele
$db_uzivatel     =     "148***_mysql_db";          // Zde uživatelské jméno
$db_heslo        =     "******";          // Zde heslo
$db_databaze     =     "148***_mysql_db";        // Zde jméno databáze
$db_tabulka      =     "authme_administrace";        // Zde zadej jméno AuthMe tabulky
$hash            =     "SHA256";           // Zde zadej typ šifrování

///////////////
//  SKRIPT   //
///////////////
if(isset($_SESSION['uzivatel'])) {
    echo "<a href='?odhlasit=true'><button>Odhlásit</button>";
    if(isset($_GET['odhlasit']) && $_GET['odhlasit']==true) session_destroy();
} else {
$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;
                //Úspěšné přihlášení
                echo "<?php
header("Location: admin.php") //prehodí hneď
?>";
            }
            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>";
        }
    }
}
}

//Obnova hesla
if(isset($_GET['action']))
{
    if($_GET['action'] == "newpassword")
    {
        echo "<form method='post'><input type='text' name='udaj' placeholder='Přezdívka'><button type='submit'>Zaslat heslo!</button></form>";
        if(isset($_POST['udaj']))
        {
            if(!empty($_POST['udaj']))
            {
                function random_pwd($length)
                {                
                    $rangeMin = pow(36, $length-1);
                    $rangeMax = pow(36, $length)-1;
                    $base10Rand = mt_rand($rangeMin, $rangeMax);
                    $newRand = base_convert($base10Rand, 10, 36);
    
                    return $newRand;
                }
                $new_query_email = mysqli_query($mysqli, "SELECT email FROM ".$db_tabulka." WHERE username = '".$_POST['udaj']."'");
                $new_query_data = mysqli_fetch_array($new_query_email);
                $random_pw = random_pwd(10);
                $random_pw_md = md5($random_pw);    
                $message = "Tvoje nove heslo pro jmeno ".$_POST['udaj']." je " . $random_pw;
                ini_set("SMTP","ssl://smtp.gmail.com");
                ini_set("smtp_port","587");
                mail($new_query_data['email'], 'New Password', $message);
                $query = mysqli_query($mysqli, "UPDATE ".$db_tabulka." SET password = '".$random_pw_md."' WHERE username = '".$_POST['udaj']."'");
                echo "Tvé heslo bylo změněno! Zkontroluj svoji e-mailovou schránku.";
                
            }
        }
    }
}

?>

Jak je to
$_SESSION['uzivatel'] = $nick;
                //Úspěšné přihlášení
                echo "<?php
header("Location: admin.php") //prehodí hneď
?>";
tak tam to chci ale když to tam dám nenačte se mi to nevíte proč?
lionel messi
Profil
Stačí to takto:
//Úspěšné přihlášení
header("Location: admin.php");
McBOY
Profil
Děkuji moc funguje :D
lionel messi
Profil
Pôvodný obsah príspevku odstránený, keďže McBOY chybu našiel (pôvodný obsah je tým pádom bezpredmetný). :-) prosím o zmmmazanie, nech tu nevisí zbytočný bordel. Celkom by som uvítal možnosť odstránenia vlastného príspevku, občas by sa mi to hodilo.
Moderátor jenikkozak: Není důvod příspěvek mazat.

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: