ďťż

[php] Logowanie

       

Podstrony


telcocafe

Witam
Prosze sprawdzić mi ten skrypt logowania:
if ($_SESSION['myself']<>substr($_SERVER['DOCUMENT_ROOT' ],0,-1).dirname($_SERVER['PHP_SELF'])) unset($_SESSION['myself']); if ((!isset($_SESSION['login']) || !isset($_SESSION['id']) || !isset($_SESSION['name']) || !isset($_SESSION['level']) || !isset($_SESSION['myself'])) && $type<>'login') header ("Location: ".$_SERVER['PHP_SELF']."?go=admin&type=login"); if (isset($_SESSION['login']) && !isset($type)) header ("Location: ".$_SERVER['PHP_SELF']."?go=admin&type=info"); if ($type=='login') { echo "<h2>LOGOWANIE</h2><hr align='left' style='width:80%'><br><br>"; if (isset($_SESSION['error'])){ echo $_SESSION['error'].'<br>'; unset($_SESSION['error']); } (!isset($_SESSION['login']) || !isset($_SESSION['id']) || !isset($_SESSION['name']) || !isset($_SESSION['level']) || !isset($_SESSION['myself'])) or die ('<a id="great">JesteÂś juÂż zalogowany!</a><META HTTP-EQUIV="Refresh" CONTENT="2; URL='.$_SERVER['PHP_SELF'].'?go=admin&type=info">'.drawDesign( false,false,true)); if (isset($_POST['login'])) { $search = "SELECT * FROM `users` WHERE `login`='".addslashes($_POST['login'])."'"; $wykonaj = mysql_query($search); while($wiersz = mysql_fetch_array($wykonaj)){ $spr=1; if (sha1($_POST['pass'])==$wiersz['pass']){ $_SESSION['id']=$wiersz['id']; $_SESSION['login']=$wiersz['login']; $_SESSION['name']=stripslashes($wiersz['name']); $_SESSION['level']='1111111111'; $_SESSION['myself']=substr($_SERVER['DOCUMENT_ROOT'],0, -1).dirname($_SERVER['PHP_SELF']); header ("Location: ".$_SERVER['PHP_SELF']."?go=admin&type=info"); }else { $_SESSION['error']= '<a id="error">B³êdne hasÂło!</a>'; header ("Location: ".$_SERVER['PHP_SELF']."?go=admin&type=login"); } } if ($spr<>1) { $_SESSION['error']= '<a id="error">B³¹d logowania, spróbuj ponownie</a>'; header ("Location: ".$_SERVER['PHP_SELF']."?go=admin&type=login"); } }ELSE{ echo ' <form method="post"> <table border="0"> <tr><td><b>Login: </b></td> <td><input type="text" name="login" class="inputbox" size="15"><br></td></tr> <tr><td><b>HasÂło: </b></td> <td><input type="password" name="pass" class="inputbox" size="15"></td></tr> <tr><td>&nbsp</td></tr> <tr><td colspan="2" style="text-align:right"><button name="submit" value="Loguj" type="submit">Loguj</button></td></tr> </table> <br> </form>'; } }

Jest on mojej roboty, ale chyba ma dziurę jakąś, bo kumplowi zrobiłem małego cms i co chwile miał zmieniane hasło, i ktoś inny przejmował kontrolę.

//pozdrawiam pinokio999



Czytuj regulaminy <_<
Po pierwsze, korzystasz z register globals, co jest błędem. A jeśli chodzi o to, że ktoś inny zmienia coś, jest to wynikiem użycia sesji. Na jednym koncie pracuje kilku użytkowników o różnych sesjach i mogą pracować niezależnie. Najlepiej jest użyć ciasteczek lub, jeśli tak się upierasz przy sesjach, w bazie zapisywać identyfikator sesji, by nie było możliwości dublowania zalogowanych użytkowników.

Więc jak to poprawić?? W jaki sposób ktoś może przejąć kontrolę, nie znając loginu czy hasła?? Prosze o pomoc

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.