Autor | Zpráva | ||
---|---|---|---|
Corek Profil * |
Zdravím, chtěl bych se zeptat, zda by jste mi nemohli mrknout na tento zdrojak u loginu, zda je vše v pořádku. Snažím se udělat co nejjednodušší login s využití session
Díky <?php echo " <form action=\"./index.php?id=3\" method=post> Jmeno: <input type=text name=jmeno><br /> Heslo: <input type=password name=heslo><br /> <input type=submit name=sb value=přihlásit > </form> "; $jmeno = $_POST['jmeno']; $heslo = $_POST['heslo']; do{ @$spojeni=MySQL_Connect("mysql.wu.cz", prihlasovací_jmeno, heslo); if(!$spojeni): echo "Nelze spojit"; break; endif; MySQL_Select_DB(prihlasovací_jmeno); @$vysledek=MySQL_Query("SELECT * FROM users") OR print mysql_error(); while ($zaznam = MySQL_Fetch_Array($vysledek)){ if($zaznam["nick"]==$jmeno && $zaznam["pass"]==$heslo) $_SESSION[login]=1; $_SESSION[nick]=$jmeno;} if($_SESSION[login]==1) echo "NEPřihlášen<br>"; else echo "Jste přihlášený<br />"; MySQL_Close($spojeni); }while(false); ?> <a href="index.php">Pokračovat</a> Moderátor Mistr: Odstraněno prozrazené přihlašovací jméno a heslo. Dávej si na to příště pozor!
|
||
panther Profil |
#2 · Zasláno: 24. 8. 2009, 20:54:33
Corek
„zda je vše v pořádku. “ Funguje? Pak asi ano. Nefunguje? Je tam chyba, napiš nám, co to dělá a nedělá. |
||
Corek Profil * |
#3 · Zasláno: 24. 8. 2009, 21:03:56
No spíš bych řekl, že nefunguje... sice mi to vypíše, že jsem přhlášen po zadání jmena a hesla z DB .... ale nevím si rady s tím, aby mi to vypsalo pak po přihlášení na obrazovce stále přihlášen, dokud nedám odhlásit, což také nevím jak udělat... O:) :(
|
||
SwimX Profil |
#4 · Zasláno: 24. 8. 2009, 21:52:39 · Upravil/a: SwimX
Corek:
„zda je vše v pořádku“ formulář vypisuješ pořád, i když už je někdo přihlášen. do while v přihlášení vidím asi poprvé, a uvnitř cyklu se připojuješ k DB? to neni v pořádku atd. zkus todle: <?php // tady bude připojení do db session_start(); if(!empty($_POST['nick']) && !empty($_POST['heslo'])){ $result = mysql_query("SELECT id, jmeno, prijmeni FROM uzivatele WHERE nick = '".addslashes($_POST['nick'])."' and heslo = '".md5($_POST['heslo'])."'"); $row = mysql_fetch_assoc($result); if(is_numeric($row['id'])){ //pokud to vrati id jako cislo -> prihlasen $_SESSION['id'] = $row['id']; $_SESSION['jmeno'] = $row['jmeno']; $_SESSION['prijmeni'] = $row['prijmeni']; $_SESSION['nick'] = addslashes($_POST['nick']); header("location: /administrace/"); } else echo "Špatně vyplněné údaje"; } if($url['dir2'] == 'odhlasit'){ session_destroy(); header("location: /cs/"); exit; } if(empty($_SESSION['id'])){ echo "<h2>ADMINISTRACE</h2>"; ?> <h3>Přihlášení</h3> <form action='' method='post'> <table><tr><th>Jméno: </th><td><input type='text' name='nick'></td></tr> <tr><th>Heslo: </th><td><input type='password' name='heslo'></td></tr> </table> <p class='center'><input type='submit' class='submit' value='Přihlásit'></p> </form> <?php } else{ //tady bude všechno co se zobrazí pouze těm, kdož jsou přihlášeni ?> <h3>Přihlášení</h3> <div class='content'> <?="<p>Přihlášen {$_SESSION['jmeno']} {$_SESSION['prijmeni']} alá {$_SESSION['nick']}</p><p><a href='/administrace/odhlasit/'>Odhlásit</a>"?> </div> <?php } ?> ?> |
||
Corek Profil * |
#5 · Zasláno: 24. 8. 2009, 22:09:02
Děkuji vyzkouším, a dám vědět, v čem budu mít nejasno. Děkuji ještě jednou
|
||
Corek Profil * |
#6 · Zasláno: 24. 8. 2009, 22:15:16
jak jste napsal "// tady bude připojení do db" tak tam dám své připojení do DB ? až po co ? ... Omlouvám se za neznalost.
|
||
SwimX Profil |
#7 · Zasláno: 24. 8. 2009, 22:17:51 · Upravil/a: SwimX
Corek:
MySQL_Connect("mysql.wu.cz", prihlasovací_jmeno, heslo) or die('Nelze se spojit'); MySQL_Select_DB(prihlasovací_jmeno) or die('Nelze vybrat datbázi'); a zde jsem teď náhodou objevil registraci uživatelů: http://diskuse.jakpsatweb.cz/.sandbox/?action=vthread&forum=9&topic=2111#5 |
||
Corek Profil * |
#8 · Zasláno: 24. 8. 2009, 22:23:08
Registrace uživatelů., tu mám funkční :-) Ale děkuji. Jen jaksi te´d nevím co má dělat tento příkaz:
$row = mysql_fetch_assoc($result); |
||
SwimX Profil |
#9 · Zasláno: 24. 8. 2009, 22:32:56
Corek:
fetch assoc je v tomto případě lepčí než fetch array, protože vytvoří pouze asociativní pole. $row['nick'], $row['jmeno'] ... fetch array vytvoří totéž co fetch assoc a eště totéž co fetch row a to je: $row[0], $row[1], .... takže šetřím pamět. chyba bude v tom dotazu: $result = mysql_query("SELECT id, jmeno, prijmeni FROM uzivatele WHERE nick = '".addslashes($_POST['nick'])."' and heslo = '".md5($_POST['heslo'])."'"); zřejmě nemáš v DB sloupce id, jmeno, prijmeni a nick, a tabulku uzivatele, uprav si to podle sebe :) |
||
Corek Profil * |
A ještě malý dotaz O:)
Sem budu něco upravovat nějaký cesty ? Děkuji header("location: /administrace/"); header("location: /cs/"); |
||
Corek Profil * |
#11 · Zasláno: 24. 8. 2009, 22:35:34
„chyba bude v tom dotazu:
1 $result = mysql_query("SELECT id, jmeno, prijmeni FROM uzivatele WHERE nick = '".addslashes($_POST['nick'])."' and heslo = '".md5($_“ ano už jsem si všiml a opravil :-) |
||
Corek Profil * |
#12 · Zasláno: 24. 8. 2009, 22:39:53
A snad poslední dotaz... Dělá mi to neplechu při odhlášení, jak mám odkáznout tak, aby se pamet vynulovala a při dalším kliknutí mi to ukázalo zas formulář pro přihlášení ? .... ( Asi musíte ze mě mít dost O:) )
|
||
SwimX Profil |
Corek:
upravte <a href='/administrace/odhlasit/'>Odhlásit</a> na například toto: <a href='?log=out'>Odhlásit</a> a potom upravte: if($url['dir2'] == 'odhlasit'){ session_destroy(); header("location: /cs/"); exit; } na if(@$_GET['log']=='out'){ session_destroy(); header("location: index.php"); //index.php nahraďte názvem souboru s přihlašováním exit; } |
||
Corek Profil * |
if(@$_GET['log']=='out'){ session_destroy(); header("location: index.php"); //index.php nahraďte názvem souboru s přihlašováním exit; } takže zde vlastně napíšu cestu login.php , poněvadž tam mám celý tento zdrojový kod na přihlášení. A do: if(is_numeric($row['id'])){ //pokud to vrati id jako cislo -> prihlasen $_SESSION['id'] = $row['id']; $_SESSION['jmeno'] = $row['jmeno']; $_SESSION['prijmeni'] = $row['prijmeni']; $_SESSION['nick'] = addslashes($_POST['nick']); header("location: index.php?id=2"); } |
||
Corek Profil * |
#15 · Zasláno: 25. 8. 2009, 15:45:43
Tak už mám vše vyřešený, děkuji za ochotu.
|
||
Časová prodleva: 15 let
|
0