| 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: 15 let
|
|||
0