Autor Zpráva
lopik007
Profil
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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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&amp;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
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
panther:
Jiné řešení neexistuje?
Fergi
Profil
lopik007:
Však to co ti panther napsal je ideální, skus a uvidíš
panther
Profil
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
lopik007:
Jiné řešení neexistuje?
Je jich víc podobných, třeba udělat
select heslo from autori where login = (jméno)
a potom si heslo porovnat.

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
panther:
Na tomhle řešení se mi nelíbí to, že hází chybu syntaxe
Joker
Profil
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
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
panther:
Právě, že ne, nevím kde v čem je chyba.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0