| Autor | Zpráva | ||
|---|---|---|---|
| pito Profil |
#1 · Zasláno: 1. 7. 2017, 00:17:34
Zdravím,
Mám dvě skupiny uživatelé a admini. Na hlavní stránce index.php je přihlašovací formulář. V databazi maji uživatelé nastaveno hodnotu 1 jako práva a admini hodnotu 2. Potřebují když se přihlasí uživatel tak aby ho to přesměřovalo na jiný web než admina. Zkoušel jsem to nějak takhle,ale někde je chyba index ob_start();
session_start();
require_once 'connection.php';
$error = false;
if( isset($_POST['prihlas']) ) {
$name = trim($_POST['nazev']);
$name = strip_tags($name);
$name = htmlspecialchars($name);
$pass = trim($_POST['heslo']);
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass);
if (!$error) {
$password = hash('sha256', $pass); // password hashing using SHA256
$sql="SELECT id, nazev, heslo FROM users";
$result = $db->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($count = $result->fetch_assoc()) {
if( $count['nazev'] == $name && $count['heslo']==$password ) {
$_SESSION['nazev'] = $count['nazev'];
$_SESSION['aktivace'] = $count['aktivace'];
header("Location: login.php");
} else {
$errMSG = "Nesprávny login nebo heslo!";
}
}
}
}
}login session_start();
if($_SESSION['aktivace'] == '2'){
header("Location: admin/index.php");
} else if ($_SESSION['aktivace'] == '1'){
header("Location: uzivatele/index.php");
} else {
header("Location: index.php");
} |
||
| Slark Profil |
#2 · Zasláno: 2. 7. 2017, 22:36:08
Proč při odeslání přihlašovacího formuláře vybíráš všechny uživatele a pak následně jednotlivé řádky porovnáváš se zadaným názvem(loginem)? Stačí si přece upravit ten SQL dotaz tak, aby jsi rovnou vybral uživatele podle sloupce "nazev" a následně jen kontroloval heslo. Nicméně po přihlášení můžeš kontrolovat $count["aktivace"] a podle toho upravit header("location ...").
Tvoje definice problému "Zkoušel jsem to nějak takhle,ale někde je chyba" není dostatečná k tomu aby se dala "chyba" nějakým způsobem řešit. |
||
| pito Profil |
takže myslíš jakože změním dotaz SQL tedy přidám
WHERE nazev='$name' ORDER BY nazev" ?
Tak by to mělo přece jít. Odešlu formulář a zjistim nazev a heslo. Přes SQL (where) se mi v databazi najde uživatele kterého chci a pak se porovná heslo z formuláře a z databáze jestli je stejné, jestli je tak přidám data do session a přeměřuji na login.php kde podle $_SESSION['aktivace'] by mě to mělo přeměřovat. Jenomže když se chci přihlásit a zadám správné údaje tak se nestane nic
|
||
| Keeehi Profil |
#4 · Zasláno: 3. 7. 2017, 12:58:11
pito:
Order by je tam zbytečně a $name obsahuje vstup od uživatele, takže je potřeba ecapovat, ale jinak ano. |
||
| pito Profil |
#5 · Zasláno: 3. 7. 2017, 13:15:14
jo,ale nestane se nic. Ani mně to nikde nepřesměruje. Formulář mám v index.php tam kde se zpracují data a porovnavají. Vše jsem kontroloval a neměl by být nikde žádný překlep názvu
|
||
| Slark Profil |
#6 · Zasláno: 3. 7. 2017, 14:33:23
Pošlete sem jak teď vypadá ten PHP kód na indexu
PS: máte doufám zapnuté vypisování chybových hlášek? |
||
|
Časová prodleva: 8 let
|
|||
0