Перейти к содержимому

 Друзья: Всё для вебмастера | [ Реклама на форуме ]


Rutor
Rutor


[ DDos Услуги. DDos атака. Заказать ДДос ]


Проблемма.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1
dgrand

dgrand

    Бит

  • Members
  • 4 сообщений
<html>
<head>
<title>Админцентр - Главная</title>
<body background=images/bg.gif>
<link rel="stylesheet" href="css/style.css" type="text/css" />
<table width="819" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="30" height="24">
<img src="images/b_u_l.gif" width="30" height="30"></td>
<td width="759" bgcolor="#BCBCBC"><center><img src="images/ac.gif" width="200" height="30"> </center>  </td>
<td width="30"><img src="images/b_u_r.gif" width="30" height="30"></td>
</tr>
<tr>
<td height="19" bgcolor="#BCBCBC">&nbsp;</td>
<td bgcolor="#CCCCCC"><center>
<?php
 @error_reporting(E_ALL ^ E_NOTICE);
 @session_start();
 @ob_start(); 
 @ob_implicit_flush(0); 
 @ini_set('display_errors', true);
 @ini_set('html_errors', true);
 @ini_set('error_reporting', E_ALL ^ E_NOTICE);
 @session_destroy();
 
   require_once '../engine/functions.php';

  if(empty($mod)){$mod = "home"; }
  else if($mod=="home"){$title="Админцентр - Главная";}
  else if($mod=="addnews"){$title="Админцентр - Добавить новость";}
  
						 
  $con = mysql_connect($DBHost, $DBUser, $DBPass);
   if (!$con){
	 die('Couldnt connect to Database' );
			 }
			   mysql_select_db($DBName, $con);
			   
		   		if ((!$logged) and (empty($_POST['username']) || empty($_POST['password'])))
						{
			   echo "Не заполнены поля пароля или логина.";
			   exit;
					 }
		
			   
		$username = mysql_real_escape_string($_POST['username']); // От SQL-Injection
		$password = mysql_real_escape_string($_POST['password']); // От SQL-Injection

		$result = mysql_query("SELECT * FROM admins WHERE username=\"{$username}\"");
		$row = mysql_fetch_assoc($result); // note assoc

		$PHP_SELF = "../admin/index.php";

		if (!$logged) $logged = 0;
		$member = array();
		if (isset($_REQUEST['do']) && ($_REQUEST['do']=='logout')) {

		//~~~~~~~~~~~~~~~~~~~~~~~~~~//
		$cs_name	 = "";
		$cs_password = "";
		// ~~~~~~~~~~~~~~~~~~~~~~~~~//
		@set_cookie("cs_name","", 0);
		@set_cookie("cs_password","", 0);
		
		@session_destroy();
		@session_unset();
		

		
		$is_logged = 0;
		
		echo "<script> location='/admin/' </script>";
			 }
  
			 if ($row['password'] == $password) {

			 @set_cookie ("cs_name", $row['username'], 365);
			 @set_cookie ("cs_password", $password, 365);

			 @session_register('cs_name');
			 @session_register('cs_password');
		  

			 $_SESSION['cs_name']		= $row['username'];
			 $_SESSION['cs_password']	= $password; 
			 
			 $logged = TRUE;

			 if (!$logged) {

			  $member_id = array();
			  set_cookie("cs_name","", 0);
			  set_cookie("cs_password","", 0);
			  set_cookie(session_name(),"",0);
			  @session_destroy();
			  @session_unset();

			  }		
			 
		   }
		   elseif (isset($_SESSION['cs_name'])) {
		 

		   $member = mysql_query("SELECT * FROM admins where username='".mysql_escape_string($_SESSION['cs_name'])."' and password='".$_SESSION['cs_password']."'");
		   $member = mysql_fetch_assoc($member);
   
		   if ($member['id']) $logged = TRUE;

		   } 
		   elseif ($_COOKIE['cs_name']) 
		   {		
		   $member = mysql_query("SELECT * FROM admins where username='".mysql_escape_string($_COOKIE['cs_name'])."' and password='".$_COOKIE['cs_password']."'");
		   $member = mysql_fetch_assoc($member);

		   if ($member['id']) $logged = TRUE;

		   }
   
		   if ( $logged ) {
		   
	  
		   echo "
		   <table width=100% border=1 cellpadding=0 cellspacing=0 style=\"margin:0px;\">
		   <tr>
		   <td width=155><center>[ <a href=\"main.php?do=logout\">Выход</a> ]</center>
		   <table width=100% border=1 cellpadding=0 cellspacing=0 bgcolor=white>
		   <tr>
		   <td width=182><a href=?mod=home><img src=actions/settings.png width=48 height=48 border=0>Настройки</a></td>
		   </tr>
		   <tr>
		   <td height=24><a href=backup.php><img src=actions/backup.png width=48 height=48 border=0>Бекап</a></td>
		   </tr>
		   <tr>
		   <td><a href=?mod=addnews><img src=actions/news.png width=48 height=48 border=0>Добавить новость</a></td>
		   </tr>
		   <tr>
		   <td><a href=comments.php><img src=actions/comments.png width=52 height=52 border=0>Коментарии</a></td>
		   </tr>
		   <tr>
		   <td><a href=pages.php><img src=actions/pages.png width=48 height=48 border=0>Страницы</a></td>
		   </tr>
		   <tr>
		   <td><a href=teams.php><img src=actions/teams.png width=48 height=48 border=0>Команды</a></td>
		   </tr>
		   <tr>
		   <td><a href=admins.php><img src=actions/admins.png width=52 height=52 border=0>Админы</a></td>
		   </tr>
		   <tr>
		   <td><a href=editnews.php><img src=actions/edit_news.png width=52 height=52 border=0><br>Редактировать новости</a> </td>
		   </tr>	 
		   </table>
		   </td> 
		   <td width=512>";
		   
		   // Подключаем модули админ панели
		   require_once "modules/$mod.php";
		   //		   
		   echo "
		   </td>
		   </tr>  
		   </table>";
		   } 
		   else {
		   echo ('Неправильный пароль или логин.');
				}
				mysql_close($con);
		   ?>
</center></td>
<td bgcolor=#BCBCBC>&nbsp;</td>
</tr>
<tr>
<td><img src=images/b_b_l.gif width=30 height=30></td>
<td bgcolor=#BCBCBC><span class=style1><center>Copyright (C) 2008 Age-Web.Org | XGT.EXE</center></span></td>
	<td><img src=images/b_b_r.gif width=30 height=30></td>
  </tr>
</table>
</body>
</head>
</html>

Этот код был написан с ноля.
Короче проблемма в том что когда я перехажу по ссылке ?mod=home то мне пишет что Не заполнены логин или пароль.

	   		if ((!$logged) and (empty($_POST['username']) || empty($_POST['password'])))
						{
			   echo "Не заполнены поля пароля или логина.";
			   exit;
					 }
Если убрать это то все пашит как надо но в админку можно зайти даже без пароля и логина. Помогите решить проблемму.

#2
Jinn

Jinn

    Байт

  • Members
  • Pip
  • 77 сообщений
ты должен либо востанавливать $logged до проверки если установлена сессия. Т.е получается ты не устанавливаешь $logged и проверяешь переданы ли $_POST['username'] и $_POST['password']. а они не переданы => вылазит ошибка.
Сначала ты должен проверить существует ли сессия у этого клиента,дальше проверить подходит ли пароль и логин записанные в этой сесии(хотя это можно опустить смотря как реализован механизм авторизации).
если сессия такая не найдена,то пытаемся принять $_POST['username'] и $_POST['password'] проверяем верны ли они и создаем сессию.

Про общий вид кода я промолчу ;-)осветую перебрать весь код полностью:-)

--[ ZaeB.uS, ]]>http://zaeb.us]]> ]---
ICQ: 304227033
Jabber: jinn@jabber.prologic.ws
OCC: 82623

#3
dgrand

dgrand

    Бит

  • Members
  • 4 сообщений
А решение написать не судьба???=))))

#4
Jinn

Jinn

    Байт

  • Members
  • Pip
  • 77 сообщений
1. нет времени глубоко разбираться что в этом скрипте нахерачено
2. нет желания
3. тебе будет полезней самому разобраться,тем более как я понял тебе это должно доставлять удовольствие(т.к если человек пишет => либо ему кайф, либо работа))

--[ ZaeB.uS, ]]>http://zaeb.us]]> ]---
ICQ: 304227033
Jabber: jinn@jabber.prologic.ws
OCC: 82623


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных