Vytvářel jsem podle různých návodů administraci k webu. Stránky jsou zaheslované pro jednoho uživatele a heslo je vloženo v kódu (index.php).
Mám databází více uživatelů s DB SQL, kterým bych chtěl zpřístupnit tuto administraci. Chtěl jsem poprosit o radu, jak skript upravit, aby kontroloval uživatele z databáze, např. tabulky uzivatele a ne ze skriptu (pouze jednoho uživatele).
Níže uvádím 3 hlavní skripty:
1. Přihlašovací formulář (login.php)
<?php
session_unset();
?>
<form action="index.php" method="post">
Uživatel: <input type="text" name="user"><br>
Heslo: <input type="password" name="heslo"><br>
<input type="submit" value="Příhlásit">
</form>
2. hlavní skript s kontrolou (index.php)
<?php
session_start();
$login = $_POST['user'];
$pass = $_POST['heslo'];
//přihlašovací údaje
$login1 = 'admin';
$pass1 = 'heslo';
if (($login == $login1) and ($pass == $pass1) or ($_SESSION['authuser'] == 1)) { $_SESSION['authuser'] = 1; } else {
echo "<meta http-equiv='Refresh' content='0 ; URL=login.php'>";
exit(); }
echo "... zaheslovaný obsah ...";
?>
3. kontrolní skript (ten je ve všech ostatních stránkách)
<?php
if ($_SESSION['authuser'] != 1) {
echo "<meta http-equiv='Refresh' content='0 ; URL=../index.php'>";
echo "<p>Nemáte oprávnění k prohlížení této stránky</p>\n";
exit();
}
?>
Děkuji moc za pomoc
zaheslování více stránek pro více uživatelů
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: zaheslování více stránek pro více uživatelů
zhruba takhle(z hlavy)
login na stránce index.php:
<form action=kontrola.php>
inputy pro jméno, heslo, atd
</form>
kontrola na kontrola.php:
<?php
session_start();
[color=#808080]// někde na začátku se připoj k databázi
$jmeno=MySQL_Real_Escape_String($_POST['jmeno']); //jmeno = jméno inputu <input name=jmeno>
$heslo=MySQL_Real_Escape_String($_POST['heslo']); // to samé...
$resLogin=@MySQL_Query("SELECT jmeno,heslo FROM uzivatele WHERE jmeno='$jmeno'") Or Die(MySQL_Error());
$rLogin=MySQL_Fetch_Assoc($resLogin);
If($rLogin['heslo']==$heslo){
$_SESSION['uzivatel']=$rLogin['jmeno'];
Header("Location:administrace.php");
}
Else{
session_destroy();
echo "Špatné heslo nebo uživatel neexistuje";
}
?>[/color]
potom soubor administrace.php (a další v zaheslované zóně):
začátek:
<?php
session_start();
If(Empty($_SESSION['uzivatel']))
Header("Location:./");
Else{
pokračování kodu když je uživatel přihlášen
}
nebo můžeš uzavřít kod přes exit u toho když není přihlášen(tentýž soubor administrace.php):
<?php
session_start();
If(Empty($_SESSION['uzivatel']))
exit(Header("Location:./"));
//pokračování
asi s MySQL žádný zkušenosti nemáš takže ti napíšu návod ještě:
založ si MySQL databázi a do ni vytvoř tabulku přes SQL příkaz:
potom přihlášení pomocí PHP:
$db=@mysql_connect("server","uzivatel","heslo") or die(mysql_error());
mysl_select_db("databaze") or die(mysql_error()); //většinou stejná jako uživatel (v 90% případů)
mysql_query("SET NAMES 'utf8'"); //nastavení kódování UTF8 - doporučuji UTF8, můžeš použít ještě mnoho jiných
login na stránce index.php:
<form action=kontrola.php>
inputy pro jméno, heslo, atd
</form>
kontrola na kontrola.php:
<?php
session_start();
[color=#808080]// někde na začátku se připoj k databázi
$jmeno=MySQL_Real_Escape_String($_POST['jmeno']); //jmeno = jméno inputu <input name=jmeno>
$heslo=MySQL_Real_Escape_String($_POST['heslo']); // to samé...
$resLogin=@MySQL_Query("SELECT jmeno,heslo FROM uzivatele WHERE jmeno='$jmeno'") Or Die(MySQL_Error());
$rLogin=MySQL_Fetch_Assoc($resLogin);
If($rLogin['heslo']==$heslo){
$_SESSION['uzivatel']=$rLogin['jmeno'];
Header("Location:administrace.php");
}
Else{
session_destroy();
echo "Špatné heslo nebo uživatel neexistuje";
}
?>[/color]
potom soubor administrace.php (a další v zaheslované zóně):
začátek:
<?php
session_start();
If(Empty($_SESSION['uzivatel']))
Header("Location:./");
Else{
pokračování kodu když je uživatel přihlášen
}
nebo můžeš uzavřít kod přes exit u toho když není přihlášen(tentýž soubor administrace.php):
<?php
session_start();
If(Empty($_SESSION['uzivatel']))
exit(Header("Location:./"));
//pokračování
asi s MySQL žádný zkušenosti nemáš takže ti napíšu návod ještě:
založ si MySQL databázi a do ni vytvoř tabulku přes SQL příkaz:
Kód: Vybrat vše
CREATE TABLE `uzivatele` (
`jmeno` VARCHAR( 20 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL COMMENT 'jméno k přihlášení',
`heslo` VARCHAR( 30 ) CHARACTER SET utf8 COLLATE utf8_czech_ci NOT NULL COMMENT 'heslo k přihlášení',
PRIMARY KEY ( `jmeno` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_czech_ci COMMENT = 'přihlašovací tabulka'
potom přihlášení pomocí PHP:
$db=@mysql_connect("server","uzivatel","heslo") or die(mysql_error());
mysl_select_db("databaze") or die(mysql_error()); //většinou stejná jako uživatel (v 90% případů)
mysql_query("SET NAMES 'utf8'"); //nastavení kódování UTF8 - doporučuji UTF8, můžeš použít ještě mnoho jiných
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: zaheslování více stránek pro více uživatelů
Děkuji moc za postup.
Od včerejška až do dneška jsem nad tím seděl a bojoval, dokud se mi to nepodařilo rozchodit.
Co se týče SQL a je pravda, že se s tím učím. Už se mi po daří vytvářet tabulky, horší je to s těmi SQL dotazy.
Jestě jsem se chtěl zeptat, kdybych chtěl heslo kódovat do MD5, tak jak to udělat. Níže jsem do formuláře zkusil tuto funkci zakomponovat, ale nefunguje to. Nepustí to ani staré heslo ani nové.
Děkuji za pomoc
$jmeno=MySQL_Real_Escape_String($_POST['jmeno']); //jmeno = jméno inputu <input name=jmeno>
$heslo=MySQL_Real_Escape_String($_POST['heslo']); // to samé...
$kod = MD5($heslo);
$resLogin=@MySQL_Query("SELECT jmeno,heslo FROM uzivatele WHERE jmeno='$jmeno'") Or Die(MySQL_Error());
$rLogin=MySQL_Fetch_Assoc($resLogin);
If($rLogin['heslo']==$kod){
$_SESSION['uzivatel']=$rLogin['jmeno'];
Header("Location:administrace.php");
}
Else{
session_destroy();
echo "Špatné heslo nebo uživatel neexistuje";
}
?>
Od včerejška až do dneška jsem nad tím seděl a bojoval, dokud se mi to nepodařilo rozchodit.
Co se týče SQL a je pravda, že se s tím učím. Už se mi po daří vytvářet tabulky, horší je to s těmi SQL dotazy.
Jestě jsem se chtěl zeptat, kdybych chtěl heslo kódovat do MD5, tak jak to udělat. Níže jsem do formuláře zkusil tuto funkci zakomponovat, ale nefunguje to. Nepustí to ani staré heslo ani nové.
Děkuji za pomoc
$jmeno=MySQL_Real_Escape_String($_POST['jmeno']); //jmeno = jméno inputu <input name=jmeno>
$heslo=MySQL_Real_Escape_String($_POST['heslo']); // to samé...
$kod = MD5($heslo);
$resLogin=@MySQL_Query("SELECT jmeno,heslo FROM uzivatele WHERE jmeno='$jmeno'") Or Die(MySQL_Error());
$rLogin=MySQL_Fetch_Assoc($resLogin);
If($rLogin['heslo']==$kod){
$_SESSION['uzivatel']=$rLogin['jmeno'];
Header("Location:administrace.php");
}
Else{
session_destroy();
echo "Špatné heslo nebo uživatel neexistuje";
}
?>
Re: zaheslování více stránek pro více uživatelů
tak stahuji svůj dotaz, který jsem napsal před chvílí.
Chybu jsem odhalil. Heslo v MD5 má 32 znaků a v tabulce databáze bylo nastaveno 30.
Rozšířil jsem pole o ty dva znaky na 2 a je to v pořádku.
Je vidět, že se mám pořád co učit.
Chybu jsem odhalil. Heslo v MD5 má 32 znaků a v tabulce databáze bylo nastaveno 30.
Rozšířil jsem pole o ty dva znaky na 2 a je to v pořádku.
Je vidět, že se mám pořád co učit.
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: zaheslování více stránek pro více uživatelů
nech tam délku 30znaků, je to bezpečnější pak aspoň to heslo nedostaneš z5 
akorát si dej v přihlašovacím skriptu $heslo=SubStr($heslo,0,30)

akorát si dej v přihlašovacím skriptu $heslo=SubStr($heslo,0,30)
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 2
- 2660
-
od p3v4x
Zobrazit poslední příspěvek
21 črc 2024 18:39
-
-
více ssd na desku asrock b450 pro4 Příloha(y)
od bugicek7lpCZ » 03 lis 2024 16:43 » v Rady s výběrem hw a sestavením PC - 3
- 1474
-
od MrVoltz
Zobrazit poslední příspěvek
05 lis 2024 08:17
-
-
-
Canon pixma ts5150 w11 nelze tisknout vice kopii na stranku Příloha(y)
od mrpcz » 20 kvě 2025 07:09 » v Vše ostatní (hw) - 4
- 2327
-
od petr22
Zobrazit poslední příspěvek
20 kvě 2025 13:30
-
-
-
zamrzání Ntb + dlouhé načítání stránek a aplikací
od PARKR » 11 led 2025 12:56 » v Problémy s hardwarem - 8
- 2486
-
od PARKR
Zobrazit poslední příspěvek
11 led 2025 15:10
-
-
-
Problém s načítáním stránek - bílá blikající obrazovka po přihlášení
od linkinlot9 » 31 pro 2024 15:36 » v Programování a tvorba webu - 1
- 1598
-
od kecalek
Zobrazit poslední příspěvek
31 pro 2024 16:27
-
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti