| Autor | Zpráva | ||
|---|---|---|---|
| hladis Profil |
#1 · Zasláno: 4. 9. 2008, 07:30:32 · Upravil/a: hladis
mohli by jste mi prosím vysvětlit, jak funguje přihlášení a napsat mi i třeba nějaký jednoduchý příklad?
docela to chápu ale ten kód je pro mě velkou neznámou. dokázali by jste mi prosím poradit? za každou odpověď díky |
||
| srigi Profil |
spravis si v DB tabulku users:
CREATE TABLE `users` ( `id` mediumint unsigned NOT NULL auto_increment, `username` varchar(20) NOT NULL, `password` char(40) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM; INSERT INTO `users` (`id`, `username`, `password`) VALUES
(NULL, 'admin', SHA1('pokus'));index.php <?php
include("db.php"); // musi obsahovat funkciu db_connect()
session_start();
// je uzivatel prihlaseny?
if (isset($_SESSION['loged'])) {
// ano je, zobraz chraneny obsah
echo "Vitaj " . $_SESSION['username'];
die();
}
else {
// uzivatel nie je prihlaseny
// odoslal uzivatel prihlasovaci formular?
if (isset($_POST['submit'])) {
// ano odoslal, over udaje
$username = trim($_POST['username']);
if (empty($username))
die("prazdne policko meno");
$password = trim($_POST['password']);
if (empty($password))
die("prazdne policko heslo");
db_connect();
$query = "SELECT * FROM `users` WHERE `username` = '$username'";
@$result = mysql_query($query);
if (!$result)
die("zlyhala komunikacia s DB");
// je uzivatel zaregistrovany?
if ($row = mysql_fetch_assoc($result)) {
// ano uzivatel je registrovany
$db_passwd = $row['password'];
// over heslo
if (sha1($password) == $db_passwd) {
// heslo O.K.
$_SESSION['loged'] = "yes";
$_SESSION['username'] = $username;
$_SESSION['lastact'] = time();
header('Location: index.php');
die();
}
else {
// nespravne heslo
die("zadali ste nespravne heslo");
}
}
else {
// uzivatel nie je registrovany, odchpd prec
die("nie ste registrovany uzivatel, pristup zakazany");
}
}
else {
// prihlasovaci formular nebol odoslany, zobraz ho
?>
<form action="index.php" method="post">
meno: <input type="text" name="username" /><br />
heslo: <input type="password" name="password" /><br />
<input type="submit" name="submit" value="odoslat" />
</form>
<?php
die();
}
}
?>
|
||
| hladis Profil |
#3 · Zasláno: 4. 9. 2008, 12:21:07 · Upravil/a: hladis
srigi
kde mám toto: INSERT INTO `users` (`id`, `username`, `password`) VALUES
(NULL, 'admin', SHA1('pokus'));napsat když mám databázi na ic.cz? a když napíšu ten kód tak mi to napíše: Parse error: syntax error, unexpected T_STRING in /home/free/clanweb.cz/m/miniking/root/www/index.php on line 3 |
||
| srigi Profil |
#4 · Zasláno: 4. 9. 2008, 12:43:08 · Upravil/a: srigi
Do PhpMyAdmin-a. To su SQL prikazy.
|
||
| hladis Profil |
#5 · Zasláno: 4. 9. 2008, 12:51:18
|
||
| Kajman_ Profil * |
#6 · Zasláno: 4. 9. 2008, 12:54:22
Na konci druhého řádku chybí středník.
|
||
| hladis Profil |
#7 · Zasláno: 4. 9. 2008, 13:04:18
pořád to píše chybu: Odkaz
|
||
| joe Profil |
#8 · Zasláno: 4. 9. 2008, 13:06:12
$username = trim($_POST['username']); Data od uživatele nejsou ošetřená... |
||
| nightfish Profil |
#9 · Zasláno: 4. 9. 2008, 13:06:15
hladis
Warning: include(db.php) [function.include]: failed to open stream: No such file or directory in /home/free/clanweb.cz/m/miniking/root/www/index.php on line 2 soubor db.php neexistuje (na což bys zřejmě došel i prostým přeložením té chybové hlášky pomocí slovníku) |
||
| joe Profil |
#10 · Zasláno: 4. 9. 2008, 13:06:56
hladis
Warning: include(db.php) Musíš se taky připojit k databázi. Nemáš soubor db.php. Nejdřív by sis o tom měl něco přečíst. |
||
| hladis Profil |
#11 · Zasláno: 4. 9. 2008, 13:08:01 · Upravil/a: hladis
joe
jak je mám ošetřit? nightfish ok, vytvořil jsem soubor db.php a pořád nic, co by měl ten soubor obsahovat? srigi db_connect() prosím poraďte mi a nový odkaz: Odkaz |
||
| srigi Profil |
#12 · Zasláno: 4. 9. 2008, 15:01:58 · Upravil/a: srigi
db.php
<?php
function db_connect()
{
@$link = mysql_connect('mysql.ic.cz', 'MENO', 'HESLO');
if (!$link)
die("zlyhalo pripojenie k DB");
@$result = mysql_select_db('cw_miniking', $link);
if (!$result)
die("zlyhalo pripojenie k DB");
return true;
}joe >> to jednoduche (ne)osetrenie je tam naschval, kcel som co najkratsi kod - princip. |
||
| hladis Profil |
#13 · Zasláno: 4. 9. 2008, 16:05:19 · Upravil/a: hladis
srigi
skript funguje, jak se odhlásit a jak bych udělal registraci? |
||
| grimword Profil |
#14 · Zasláno: 4. 9. 2008, 16:27:33
odhlaseni >>zmenit(vymazat) session; registrace>>skript co bude vkladat nove zaznamy do mysql?:)
|
||
| hladis Profil |
#15 · Zasláno: 4. 9. 2008, 16:30:22
grimword
jo to mám na mysli:) |
||
| srigi Profil |
#16 · Zasláno: 4. 9. 2008, 16:42:16 · Upravil/a: srigi
hladis
Odo mna uz kod nekci, prejav trocha samostatnosti. edit: ten logout teda este napisem. Do prvej podmienky pridaj jeden riadok, tak aby to vypadalo takto: // je uzivatel prihlaseny?
if (isset($_SESSION['loged'])) {
// ano je, zobraz chraneny obsah
echo "Vitaj " . $_SESSION['username'] ."<br>\n";
echo "<a href=\"logout.php\">odhlasit</a>";
die();
}Teraz vytvor logout.php v tom istom priecinku kde je index.php: <?php
session_start();
if (isset($_SESSION['loged'])) {
// set cookie expiration time to past. Client delete such cookie
setcookie(session_name(), "", time() - 259200, '/');
// delete cookie record from client
unset($_COOKIE[session_name()]);
// unset all SESSION variables
$_SESSION = array();
// and finaly destroy this SESSION
session_unset();
session_destroy();
header('Location: index.php');
die();
}
else {
die("nepovoleny pristup");
} |
||
| hladis Profil |
#17 · Zasláno: 4. 9. 2008, 16:51:54
poradte mi nekdo kod aspon na tu registraci prosiim
|
||
| Nox Profil |
#18 · Zasláno: 4. 9. 2008, 17:14:48
http://www.linuxsoft.cz/php/
přečti a budeš vědět |
||
| hladis Profil |
#19 · Zasláno: 4. 9. 2008, 17:51:56 · Upravil/a: hladis
právě tam to čtu ale nemohu pochopit zápis MYSQL funkce INSERT, mohl by mi ho někdo aspoň trochu vysvětlit prosím?
mám kód: <form action="registrace.php" method="post">
meno: <input type="text" name="jmeno" /><br />
heslo: <input type="password" name="heslo" /><br />
<input type="submit" name="submit" value="odoslat" />
</form>
<?
// zde je include souboru s konstantami
mysql_connect(mysql.ic.cz, cw_miniking, miniking);
mysql_select_db(users);
mysql_query("INSERT INTO [users] (username) VALUES ($jmeno varchar 15, ...)")
mysql_query("INSERT INTO [users] (password) VALUES ($heslo varchar 15, ...)")
or die("Nelze vykonat definiční dotaz: " . mysql_error());
?>co v něm mám blbě? |
||
| 8383-9021 Profil * |
#20 · Zasláno: 4. 9. 2008, 18:09:23
<?
// zde je include souboru s konstantami
mysql_connect("mysql.ic.cz", "cw_miniking", "miniking");
mysql_select_db("users");
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?> |
||
| srigi Profil |
#21 · Zasláno: 4. 9. 2008, 18:13:37
„co v něm mám blbě?“
Nazov databazy predsa nie je users. Okrem toho mas zlu syntax INSERT INTO prikazu, ale oprava uz bola predvedene vyssie. |
||
| hladis Profil |
#22 · Zasláno: 4. 9. 2008, 18:18:52
|
||
| joe Profil |
#23 · Zasláno: 4. 9. 2008, 18:22:23
srigi
Ja vim, to bylo pro zakladatele, protože takoví jako je on, právě vezmou to co tu někdo napsal (ty) a zkopírujou. A pak se diví proč to a to... hladis Jak je ošetřit. Jednoduše, najdi si něco o tom, jak bezpečně vkládat data do db. Je jednoduchý zkopírovat kód, naházet ho do souboru a mít radost, že to funguje. Když něco děláš, měl bys o tom něco vědět, a to jistě nevíš jak je vidět. |
||
| 8383-9021 Profil * |
#24 · Zasláno: 4. 9. 2008, 18:23:03
hladis
Skontroluj či máš dobré údaje do db. |
||
| hladis Profil |
#25 · Zasláno: 4. 9. 2008, 18:35:15
8383-9021
podívej se sám: |
||
| 8383-9021 Profil * |
#26 · Zasláno: 4. 9. 2008, 18:42:04
hladis
<?
// zde je include souboru s konstantami
mysql_connect("mysql.ic.cz", "cw_miniking", "miniking");
mysql_select_db("cw_miniking");
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?> |
||
| hladis Profil |
#27 · Zasláno: 4. 9. 2008, 18:45:55
8383-9021
pise mi to spatne heslo a pritom ho mam dobre... |
||
| 8383-9021 Profil * |
#28 · Zasláno: 4. 9. 2008, 18:49:29
hladis
Sprav si to takto, sem medzi úvodzovky si vyplň údaje do mysql: $db_host = ""; //host $db_user = ""; //prihlasovacie meno $db_pass = ""; //prihlas. heslo $db_name = ""; //nazov db a pripajaj sa takto mysql_connect($db_host, $db_user, $db_pass); mysql_select_db($db_name); |
||
| hladis Profil |
#29 · Zasláno: 4. 9. 2008, 19:00:45
8383-9021
takže teď tam mám kód: <form action="registrace.php" method="post">
meno: <input type="text" name="jmeno" /><br />
heslo: <input type="password" name="heslo" /><br />
<input type="submit" name="submit" value="odoslat" />
</form>
<?
// zde je include souboru s konstantami
$db_host = "mysql.ic.cz"; //host
$db_user = "cw_miniking"; //prihlasovacie meno
$db_pass = "miniking"; //prihlas. heslo
$db_name = "cw_miniking"; //nazov db
mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name);
mysql_query("INSERT INTO `users` (username,password) VALUES ('$jmeno','$heslo')") or die(mysql_error());
?>a pořád mi to píše při loginu nesprávné heslo |
||
| 8383-9021 Profil * |
#30 · Zasláno: 4. 9. 2008, 19:21:59
Pri akom logine?
Ako robíš login? Keď sa prihlasuješ tak údaje nezapisuj ale načítavaj SELECT * FROM `tabulka` ... |
||
|
Téma pokračuje na další straně.
|
|||
0