zaheslování více stránek pro více uživatelů

Místo pro dotazy a rady ohledně programovacích jazyků (C++, C#, PHP, ASP, Javascript, VBS..) a tvorby webových stránek

Moderátor: Mods_senior

jurasek07
nováček
Příspěvky: 5
Registrován: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

zaheslování více stránek pro více uživatelů

Příspěvekod jurasek07 » 30 zář 2010 11:07

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

Reklama
Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: zaheslování více stránek pro více uživatelů

Příspěvekod CZechBoY » 30 zář 2010 14:13

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:

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

jurasek07
nováček
Příspěvky: 5
Registrován: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

Re: zaheslování více stránek pro více uživatelů

Příspěvekod jurasek07 » 01 říj 2010 16:04

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";
}
?>

jurasek07
nováček
Příspěvky: 5
Registrován: prosinec 06
Pohlaví: Nespecifikováno
Stav:
Offline

Re: zaheslování více stránek pro více uživatelů

Příspěvekod jurasek07 » 01 říj 2010 16:16

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.

Uživatelský avatar
CZechBoY
Master Level 9.5
Master Level 9.5
Příspěvky: 8813
Registrován: srpen 08
Bydliště: Brno
Pohlaví: Muž
Stav:
Offline
Kontakt:

Re: zaheslování více stránek pro více uživatelů

Příspěvekod CZechBoY » 01 říj 2010 20:24

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)
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


  • Mohlo by vás zajímat
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Je potřeba 16 nebo 20 a více VRAM ve hrách?
    od p3v4x » 20 črc 2024 23:06 » v Problémy s hardwarem
    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
    2485
    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: Seznam[Bot] a 5 hostů