Autor | Zpráva | ||
---|---|---|---|
lopik007 Profil |
#1 · Zasláno: 8. 7. 2010, 16:31:27
Zdravím. Předem bych chtěl říct, že přihlášení do administrace funguje, ale problém je v tom, že se do administrace může přihlásit opravdu každý bez použití správných údajů. Tedy stačí zadat do políčka jméno jedno písmeno, nebo více, stisknout entr a přihlásí se to. Jak tomu zabránit? Zde jsou scripty:
login.php <?include "mysqlconnect.php"; $vysledek=mysql_query("select * from autori"); while ($zaznam=MySQL_Fetch_Array($vysledek)){ if ($login==$zaznam["login"]) {$heslodb=$zaznam["heslo"]; $id=$zaznam["id"];} else {} } if ($heslo==$heslodb) {setcookie("cookielogin", $id, time()+1800); header('location:admin.php');;} else {echo "Nepřihlášeno<br><a href=index.php>Neplatne uživatelské jméno nebo heslo. Prosím přihlaste se znova, se správnými údaji</a>";} ?> admin.php <html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="generator" content="http://www.lopik.own.cz/"> <link rel="stylesheet" type="text/css" href="adminstyl.css" /> <script type="text/javascript" src="http://www.bartovicanka.cz/scripts/ajaxupload.js"></script> <title>Administrace restaurace bartovičanka</title> <style type="text/css"> iframe { display:none; } </style> </head> <body> <div id="obaleno"> <div id="header"><div id="prihlasen">Přihlášen: <?php echo $_GET["login"] ?> | <a href="unlog.php">Odhlásit</a></div></div> <div id="nabidka"> <img class="img" src="../grafika/text.png" width="10" height="12" style="border: none;"><a href="admin.php?act=telo&login=<?php echo $_GET["login"]; ?>">Úvodní text</a><br /><br /> <img class="img" src="../grafika/maps.png" width="10" height="12" style="border: none;"><a href="admin.php?act=mapa&login=<?php echo $_GET["login"]; ?>">Kde nás najdete</a><br /><br /> <img class="img" src="../grafika/listek.png" width="10" height="12" style="border: none;"><a href="admin.php?act=listek&login=<?php echo $_GET["login"]; ?>">Jídelní lístek</a><br /><br /> <img class="img" src="../grafika/akce.png" width="10" height="12" style="border: none;"><a href="admin.php?act=akce&login=<?php echo $_GET["login"]; ?>">Akce</a><br /><br /> <img class="img" src="../grafika/photo.png" width="10" height="12" style="border: none;"><a href="admin.php?act=foto&login=<?php echo $_GET["login"]; ?>">Fotogalerie</a><br /><br /> <img class="img" src="../grafika/cafe.png" width="10" height="12" style="border: none;"><a href="admin.php?act=napoje&login=<?php echo $_GET["login"]; ?>">Nápojový lístek</a><br /><br /> <img class="img" src="../grafika/doba.png" width="10" height="12" style="border: none;"><a href="admin.php?act=doba&login=<?php echo $_GET["login"]; ?>">Otevírací doba</a><br /><br /> <img class="img" src="../grafika/kontakt.png" width="10" height="12" style="border: none;"><a href="admin.php?act=kontakt&login=<?php echo $_GET["login"]; ?>">Kontaktní údaje</a><br /><br /> <img class="img" src="../grafika/banner.png" width="10" height="12" style="border: none;"><a href="admin.php?act=banner&login=<?php echo $_GET["login"]; ?>">Bannery</a><br /><br /> <img class="img" src="../grafika/guestbook.png" width="10" height="12" style="border: none;"><a href="admin.php?act=guestbook&login=<?php echo $_GET["login"]; ?>">Kniha návštěv</a><br /><br /> <img class="img" src="../grafika/akce.png" width="10" height="12" style="border: none;"><a href="admin.php?act=pakce&login=<?php echo $_GET["login"]; ?>">Pro akce</a><br /><br /> <img class="img" src="../grafika/graf.png" width="10" height="12" style="border: none;"><a href="admin.php?act=statik&login=<?php echo $_GET["login"];?>">Návštěvnost</a><br /><br /><br /> <img class="img" src="../grafika/home.png" width="10" height="12" style="border: none;"><a href="../index.php" title="Zpět na úvodní stránku restaurace Bartovičanka">Zpět na web</a> </div> <?php if(isset($_GET["act"])){ switch($_GET["act"]){ case "telo":include("inc/text.php");break; case "mapa": include("inc/mapa.php");break; case "statik":include("inc/statik.php");break; case "listek":include("inc/listek.php");break; case "akce":include("inc/akce.php");break; case "foto":include("inc/foto.php");break; case "napoje":include("inc/napoje.php");break; case "doba":include("inc/doba.php");break; case "kontakt":include("inc/kontakt.php");break; case "banner":include("inc/banner.php");break; case "guestbook":include("inc/kniha.php");break; case "pakce":include("inc/pakce.php");break; case "statik":include("inc/statistika.php");break; } } ?> </div> </body> </html> Jak zabránit přihlášení ostatních uživatelů do administrace? Před pár dny mi někdo radil, že stačí přidat: <? include "mysqlconnect.php"; $id = $_COOKIE['cookielogin']; if ($id>0) {setcookie("cookielogin", $id, time()+1800); echo" - Obsah administrace - "; } else {echo 'neplatný pokus návrat zpět';} ?> Jenže tohle řešení nefunguje. Jak ho vyřešit? |
||
panther Profil |
#2 · Zasláno: 8. 7. 2010, 16:38:57
lopik007:
ono je to celé nějaké divoké. Udělej hned na začátku toho scriptu (první script ve tvém příspěvku) něco ve smyslu: mysql_query ("SELECT * FROM autori WHERE login = '".mysql_real_escape_string($_POST['login'])."' and heslo = '".sha1($_POST['heslo'])."' LIMIT 1"); |
||
lopik007 Profil |
#3 · Zasláno: 8. 7. 2010, 17:05:37
panther:
Jiné řešení neexistuje? |
||
Fergi Profil |
#4 · Zasláno: 8. 7. 2010, 17:07:45
lopik007:
Však to co ti panther napsal je ideální, skus a uvidíš |
||
panther Profil |
#5 · Zasláno: 8. 7. 2010, 17:09:17
lopik007:
„Jiné řešení neexistuje?“ proč? Co se ti na něm konkrétně nelíbí? Samozřejmě, existuje pak třeba řešení, jaké jsi vymyslel ty v [#1], jestli se ti zdá lepší :-) |
||
Joker Profil |
#6 · Zasláno: 8. 7. 2010, 17:12:58
lopik007:
„Jiné řešení neexistuje?“ Je jich víc podobných, třeba udělat select heslo from autori where login = (jméno) Každopádně Vybrat z databáze záznam odpovídající loginu a porovnat jeho heslo je správné řešení. Řešení Vybrat z databáze všechny záznamy, pak je postupně všechny projít, porovnat se zadanými údaji a pokud souhlasí, uložit si ID do proměnné a pokračovat v procházení je trochu ulítlé. |
||
lopik007 Profil |
#7 · Zasláno: 8. 7. 2010, 17:13:31
panther:
Na tomhle řešení se mi nelíbí to, že hází chybu syntaxe |
||
Joker Profil |
#8 · Zasláno: 8. 7. 2010, 17:14:54 · Upravil/a: Joker
lopik007:
„Na tomhle řešení se mi nelíbí to, že hází chybu syntaxe“ Pak to bude potřeba naprogramovat syntakticky správně. V chybové hlášce je napsané na jakém řádku chyba nastává a co je to za chybu. |
||
panther Profil |
#9 · Zasláno: 8. 7. 2010, 17:16:16 · Upravil/a: panther
lopik007:
„Na tomhle řešení se mi nelíbí to, že hází chybu syntaxe“ tak promiň, jestli jsem se upsal, syntaktickou chybu si snad můžeš opravit, ne? |
||
lopik007 Profil |
#10 · Zasláno: 8. 7. 2010, 17:27:04
panther:
Právě, že ne, nevím kde v čem je chyba. |
||
Časová prodleva: 14 let
|
0