Autor Zpráva
Norbert Pelc
Profil
Vím, že už se to tady řešilo.

Potřebuji udělat přihlašení, tak aby nikdo nezjistil heslo.
A jestě potřebuji tam mít více uživatelů a každý musí mít svoje jméno a heslo.
Prosím nějaké kódy.
Dík.
Suji
Profil
http://www.jakpsatweb.cz/heslo.html
Casero
Profil
Norbert Pelc
Vím, že už se to tady řešilo.
tak hledej!!..skoro vždycky se stránka hesluje, aby nešlo zjistit heslo
Norbert Pelc
Profil
No jo ale kdy použiji PHP heslovani tak je heslo videt v kodu ne???
<body>
<? if($heslo != "mellon"): ?>
<!--přihlaąovací formulář -->
<form>
Zadej heslo: <input type=password name="heslo">
<input type=submit>
</form>
<? ; else: ?>
<h1>Vítejte v Morii!</h1>
... daląí tajný text
<? endif ?>
</body>
mellon je ale v kodu,
ale chtel bych to tak ze na jedne strance bych mel formular a na druhe obsah po zadani hesla.
Suji
Profil
ja pouzivam neco takoveho

formular na posilani hesla
<form action="https://neco.cz/?akce=prihlasit" method="post" accept-charset="utf-8" class="testuser">
<div><span class="tu">Login</span><input type="text" name="login" value="" maxlength="64" size="10" /><br /></div>
<div><span class="tu">Password</span><input type="password" name="password" id="snd" value="" size="10" maxlength="20" /><br /></div>
<div><span class="tu">&nbsp;</span><input type="submit" value="LOGIN" /></div>

</form>

a pak cast, ktera urcuje, zda je heslo spravne
$datab = @mysql_connect($shost,$slogin,$spwd)
or die("Nelze se pripojit k My SQL serveru 2");
@mysql_select_db($database)
or die("Nelze se pripojit k databazi 2");
$query = "SELECT * FROM users WHERE login ='".$_POST['login']."'";
$result = mysql_query($query);
$user = mysql_fetch_array($result);
mysql_close();
$pass1 = sha1($_POST['password']);
if (strcmp($pass1, $user['password'])==0 and strcmp($_POST['login'], $user['login'])==0) {
$logged = true;}

v databazi mam tabulku users kde mam mj. sloupce login a password.
Casero
Profil
No jo ale kdy použiji PHP heslovani tak je heslo videt v kodu ne???
ne!!..php se provádí na serveru...
Alphard
Profil
No jo ale kdy použiji PHP heslovani tak je heslo videt v kodu ne???
funkce: md5
Norbert Pelc
Profil
Prosim udela mi nekdo tu databazi, ja jsem to nejak zmrvil
Norbert Pelc
Profil
takze si mam udelat treba index.php
do ktereho vlozim

$datab = @mysql_connect($shost,$slogin,$spwd)

or die("Nelze se pripojit k My SQL serveru 2");
@mysql_select_db($database)
or die("Nelze se pripojit k databazi 2");
$query = "SELECT * FROM users WHERE login ='".$_POST['login']."'";
$result = mysql_query($query);
$user = mysql_fetch_array($result);
mysql_close();
$pass1 = sha1($_POST['password']);
if (strcmp($pass1, $user['password'])==0 and strcmp($_POST['login'], $user['login'])==0) {
$logged = true;}


a jeste jednou vytvori mi nekdo db
dekuji
Joker
Profil
Aby heslo nebylo čitelné z kódu, to se dělá přes hash, třeba MD5:
$spravne_heslo = "0d85b5a27848801d423acbe885326539";
if(isset($_POST["heslo"])) $heslo = md5($_POST["heslo"]); else $heslo = false;
if($heslo != $spravne_heslo)
echo('Zadejte heslo: <form action="neco.php" method="post"><input type="password" name="heslo" id="heslo"><input type="submit"></form>');
else{
echo("Tajný text!");
}

No anebo totéž, ale přes databázi. Jediný rozdíl by byl v tom, že heso (popřípadě jména a hesla) by bylo uložené v databázi.

Dotaz pak může vypadat nějak takhle:
$jmeno = strtolower(htmlspecialchars($_POST["jmeno"]));
$heslo = md5($_POST["heslo"];
$sql = "SELECT id FROM users WHERE jmeno='$jmeno' AND heslo='$heslo'"

dotaz se provede a pokud se nevrátí žádný řádek, napíšeme "špatné jméno nebo heslo".
Ohledně struktury tabulky, záleží jaké informace tam potřebujete držet.
Pro můj příklad by to bylo asi takhle:
id: INT NOT NULL AUTO_INCREMENT
jmeno: VARCHAR(*na kolik omezíte délku jména*)
heslo: CHAR(32)
Norbert Pelc
Profil
Potřebuji tam mít jen jmeno a heslo.
Chci tam mít více uživatelů.
Anonymní
Profil *
zkoušel jsem tento příklad:

$spravne_heslo = "0d85b5a27848801d423acbe885326539";
if(isset($_POST["heslo"])) $heslo = md5($_POST["heslo"]); else $heslo = false;
if($heslo != $spravne_heslo)
echo('Zadejte heslo: <form action="neco.php" method="post"><input type="password" name="heslo" id="heslo"><input type="submit"></form>');
else{
echo("Tajný text!");
}

ale nefunguje mi to. Hází mi to chybu parse v tomto řádku:

echo('Zadejte heslo: <form action="neco.php" method="post"><input type="password" name="heslo" id="heslo"><input type="submit"></form>');

ovšem mně nepřijde, že je tam chyba...můžete mi nějak poradit?

Celá stránka vypadá takto:

<?php
$title='název';
$obsah="\n".'
<h4>nadpis</h4>

$spravne_heslo = "0d85b5a27848801d423acbe885326539";
if(isset($_POST["heslo"])) $heslo = md5($_POST["heslo"]); else $heslo = false;
if($heslo != $spravne_heslo)
echo('Zadejte heslo: <form action="muj_soubor.php" method="post"><input type="password" name="heslo" id="heslo"><input type="submit"></form>');
else{
echo("Tajný text!");
}

'."\n";
require("dalsi_casti_stranky.inc.php");
?>
Radek Rojík
Profil *

<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="password" name="heslo" id="heslo">
<input type="submit">
</form>

<?php

function chyba() {
***sem dej nějaké chybové hlášení s rozumným koncem či reloadem****
exit;
}
...
kód
...
$spravne_heslo=" ***vygenerovaná hodnota***";
if (!$_POST["heslo"]) {
echo "Není heslo";
chyba();
}
else {
$heslo = $_POST["heslo"];
$heslo = htmlspecialchars($heslo);
if (sha1($heslo) !== $spravne_heslo) chyba();
else {
***************************
*** kód pro výpis tajností ****
***************************
}
}
?>


funkce sha1() je silnější než md5().
udělej si nějakou zkušební stránku aby ti vygenerovala (*** vygenerovanou hodnotu ***):

<?php
echo "vygenerovaná hodnota je: ". sha1("tvoje heslo");
?>


Je to na rychlo napsaný, ale snad tě to něco pomůže. [url=mailto:radek@rawas.cz] Po případě mi napiš[/url]
Toto téma je uzamčeno. Odpověď nelze zaslat.