Autor Zpráva
nickfakeee
Profil
Zdravím, co mám na tom špatně? Zadávám správné údaje a nejde mi to :(

INDEX.html
:
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="check.php" method="post">
<table align="center" style="cellpadding: 10px; cellspacing: 10px;">
<tr><td>Jmeno:</td><td><input type="text" name="Admin Jmeno" /></td></tr><tr><td>Heslo:</td><td><input type="password" name="Admin Heslo" /></td></tr><tr><td></td></td><td><input type="submit" value="Odeslat" /> </td></tr></table></form></body></html>

Check.php
<?php
$name=$_POST['name'];
$pass=$_POST['pass'];

if ($name==("admin") & $pass==("123")) {


    session_register ('name');
    session_register ('pass');
    header("location:admin.php");

}
else echo ' Spatne prihlasovaci udaje. Skus to znovu! Dekuji.';

?>

Admin.php
<?php
session_start() ;
if(!session_is_registrated ('pass')) {

    header("location:index.html");
}


?>

<html>
<head>
<title>Admin Stranka</title>
</head>
<body>
<center>
Vitej Admin!</center>
</body>
</html>
lionel messi
Profil
nickfakeee:
Zdravím, co mám na tom špatně?

Viacero vecí:

1. Operátor & znamená síce and, ale tzv. bitové, ty potrebuješ logické, čiže &&.

2. Funkcie session_register je od PHP 5.4.0 odstránená (prežitok z dôb štvorky a nižších verzií), session_is_registrated zase súčasťou jazyka nikdy nebola (podľa kuloárnych zdrojov uvažuje Rasmus Lerdorf o jej zavední v PHP 8). Jej pokrvnú sestru session_is_registered postretol rovnaký osud ako session_register.
nickfakeee
Profil
Tento kód jsem dělal podle nějaké stránky.. čiže pošlete mi upravený ten check.php? ten kód?


if ($name==("admin") && $pass==("123")) { takhle?
lionel messi
Profil
nickfakeee:
Tento kód jsem dělal podle nějaké stránky..

Zastaraných návodov sa, bohužiaľ, povaľuje po internete množstvo.

čiže pošlete mi upravený ten check.php? ten kód?

Budiž. Mimochodom, ďalšia chyba je zle nastavený atribút name u inputov (nekorešponduje s kľúčmi v $_POST).

index.html
<html>
<head>
<title>Login</title>
</head>
<body>
<form action="check.php" method="post">
<table align="center" style="cellpadding: 10px; cellspacing: 10px;">
<tr><td>Jmeno:</td><td><input type="text" name="name" /></td></tr><tr><td>Heslo:</td><td><input type="password" name="pass" /></td></tr><tr><td></td></td><td><input type="submit" value="Odeslat" /> </td></tr></table></form></body></html>

Check.php

<?php
session_start();

if (empty($_POST['name']) || empty($_POST['pass'])) {
  echo "Vyplňte prosím všechny pole.";
}

$name = $_POST['name'];
$pass=$_POST['pass'];
 
if ($name== "admin" && $pass== "123") {
 
    $_SESSION['name'] = $name;

    header("location:admin.php");
    exit();
 
}
else {
  echo ' Spatne prihlasovaci udaje. Skus to znovu! Dekuji.';
  }
 
?>

Admin.php
<?php
session_start() ;
if($_SESSION['name'] != "admin") {
    header("location:index.html");
    exit();
}
 
else { 
?>
 
<html>
<head>
<title>Admin Stranka</title>
</head>
<body>
<center>
Vitej Admin!</center>
</body>
</html>
<?php
}
?>

Pre inšpiráciu mrkni na lepší návod: Odkladiště PHP FAQ » Registrace uživatelů
nickfakeee
Profil
Když zadám jméno admin a heslo 123 (to je jen test)
Tak se mi nic neukáže..
Vilak
Profil
Úplně moc jsem to nekoumal, ale snažil jsem se to přepsal do podoby, ve které se to dá přečíst (zároveň ti tam chyběl středník, blbnul si tam s <td></td> etc.)
jinak jsem funkčnost skriptu nezkoušel... pokud nepůjde, můžeš použít "kontrolu" a vypsat si pak veškeré post prvky pomocí print_r($_POST)

index.php
<html>
<head>
    <title>Login</title>
</head>
<body>
    <form action="check.php" method="POST">
        <table align="center" style="cellpadding: 10px; cellspacing: 10px;">
            <tr>
                <td>Jmeno:</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>Heslo:</td>
                <td><input type="password" name="pass" /></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="Odeslat" /></td>
            </tr>
        </table>
    </form>
</body>
</html>
check.php
<?php
    session_start();
     
        // získání proměnných, měly by se ošetřit pomocí htmlspecialchars, trim apod.
        $name = $_POST['name'];
        $pass = $_POST['pass'];

    // ověření prázdných proměnných
    if (empty($name) || empty($pass) {
      echo "Vyplňte, prosím, všechna pole.";
    }
    // ověření správně vyplněných proměnných
    if ($name == "admin" && $pass == "123") {
     
        // pokud souhlasí, zapiš $name do session a přesměruj se na stránku admin.php
        $_SESSION['name'] = $name;
        header("Location: ".$_SERVER['SERVER_ROOT']."http://www.TVŮJWEB.cz/admin.php");
    }
    else {
      echo "Špatné přihlašovací údaje. Zkuste to znovu, děkujeme.";
    }
?>
admin.php
<?php
    session_start();

    if($_SESSION['name'] != "admin") {
        header("Location: ".$_SERVER['SERVER_ROOT']."http://www.TVŮJWEB.cz/index.php");
    }
    else {
        echo "
            <html>
            <head>
                <title>Admin Stránka</title>
            </head>
            <body>
                <center>Vitej Admine!</center>
            </body>
            </html>
        ";
    }
?>
mimochodec
Profil
Vilak:
A čo si predstavujete pod takým pojmom $_SERVER['SERVER_ROOT']?
nickfakeee
Profil
Zase mám prázdnou stránku :(
mimochodec
Profil
nickfakeee:
Vypiš si na začátku var_dump ($_POST);
nickfakeee
Profil
mimochodec:
kde?
mimochodec
Profil
nickfakeee:
Jestli chceš stavět weby, neobejdeš se bez nějakého ladění, prázdná stránka není informace. Potřebuješ zjistit, co se tam děje. Jestli se bavíme o tom, že "prázdná stránka" je ta check.php, měl bys mít jasno, co ta stránka má dělat. První příkaz je session_start(), pak je načtení $_POST[] hodnot. Jestli chceš vědět, co a proč se děje, potřebuješ vědět, co v tom $_POST je. Zjistíš to tím příkazem, co jsem napsal.

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: