Грешка при влизане в Админ панел

pechkata

Registered
Здравеите


Днес си свалих една система , инсталирах всичко ОК , но като пробвам да влезна в админ панела :


HTML:
[Sat Dec 17 15:51:46 2011] [error] [client 127.0.0.1] PHP Notice:  A session had already been started - ignoring session_start() in /var/www/Web/include/access.inc.php on line 23, referer: http://localhost/Web/ban_list.php
[Sat Dec 17 15:51:46 2011] [error] [client 127.0.0.1] PHP Notice:  A session had already been started - ignoring session_start() in /var/www/Web/include/admin/admin_so_in.php on line 2, referer: http://localhost/Web/ban_list.php
[Sat Dec 17 15:51:49 2011] [error] [client 127.0.0.1] File does not exist: /var/www/favicon.ico


Използвам Ubuntu с инсталиранo Аpache и ' php5 libapache2-mod-php5 ' и Mysql
 
Не е нужно да пускаш втора тема. Като искаш да ти се отговори в темата, пишеш нов коментар UP, за да се вдигне нагоре.


ЕДИТ: Според грешката ти се мъчиш да стартираш няколко пъти сесията. Дай код! И по-точно началата на access.inc.php и admin_so_in.php
 
relax4o каза:
Не е нужно да пускаш втора тема. Като искаш да ти се отговори в темата, пишеш нов коментар UP, за да се вдигне нагоре.


ЕДИТ: Според грешката ти се мъчиш да стартираш няколко пъти сесията. Дай код! И по-точно началата на access.inc.php и admin_so_in.php
Не бях видял , че има бутон "UP" , съжелявам за което


admin_so_in :
PHP:
<?php
	session_start();
	if(!$_SESSION["loggedin"]) {
		header("Location:index.php");
	}
	$admin_site="in";
	$title2 ="_TITLEINFO";
	
	//optimize tables
	if(isset($_POST["optimize"])) {
		if ( !has_access("prune_db") ) {
			header("Location:index.php");
			exit;
		}
		$query = mysql_query("SHOW TABLES FROM `" . $config->db_db. "` LIKE '".$config->db_prefix."_%'");
		while($result = mysql_fetch_array($query)) {
			$tables.=(($tables)?",":"")."`".$result[0]."`";
		}
		$query = mysql_query("OPTIMIZE TABLES ".$tables);
		$user_msg="_DBOPTIMIZED";
	}
	
	//prune db
	$prunecount=-1;
	if(isset($_POST["prunedb"])) {
		if ( !has_access("prune_db") ) {
			header("Location:index.php");
			exit;
		}
		$query=mysql_query("SELECT ba.bid,ba.ban_created,ba.ban_length,se.timezone_fixx FROM ".$config->db_prefix."_bans as ba 
							LEFT JOIN ".$config->db_prefix."_serverinfo AS se ON ba.server_ip=se.address WHERE ba.expired=0");
		$prunecount=0;
		while($result = mysql_fetch_object($query)) {
			//prune expired bans
			if(($result->ban_created + ($result->timezone_fixx * 60 * 60) + ($result->ban_length * 60)) < time() && $result->ban_length != "0") {
				$prunecount++;
				$prune_query = mysql_query("UPDATE `".$config->db_prefix."_bans` SET `expired`=1 WHERE `bid`=".$result->bid);
				$prune_query = mysql_query("INSERT INTO `".$config->db_prefix."_bans_edit` (`bid`,`edit_time`,`admin_nick`,`edit_reason`) VALUES (
								'".$result->bid."','".($result->ban_created + ($result->timezone_fixx * 60 * 60) + ($result->ban_length * 60))."','amxbans','Bantime expired')");
			}
		}
		$smarty->assign("prunecount",$prunecount);
		$user_msg="_DBPRUNED";
	}
	
	function return_bytes($val) {
		$val = trim($val);
		$last = strtolower($val[strlen($val)-1]);
		switch($last) {
			// The 'G' modifier is available since PHP 5.1.0
			case 'g':
				$val *= 1024;
			case 'm':
				$val *= 1024;
			case 'k':
				$val *= 1024;
		}

		return $val;
	}
	@$gd=gd_info();
	$gd_version=$gd["GD Version"];
	$php_settings=array(
			"display_errors"=>(ini_get('display_errors')=="")?"off":ini_get('display_errors'),
			"register_globals"=>(ini_get('register_globals')==1 || ini_get('register_globals')=="on")?"_ON":"_OFF",
			"magic_quotes_gpc"=>(get_magic_quotes_gpc()==true)?"_ON":"_OFF", 
			"safe_mode"=>(ini_get('safe_mode')==1 || ini_get('safe_mode')=="on")?"_ON":"_OFF",
			"post_max_size"=>ini_get('post_max_size')." (".return_bytes(ini_get('post_max_size'))." bytes)",
			"upload_max_filesize"=>ini_get('upload_max_filesize')." (".return_bytes(ini_get('upload_max_filesize'))." bytes)",
			"max_execution_time"=>ini_get('max_execution_time'),
			"version_php"=>phpversion(),
			"version_amxbans_web"=>$config->v_web,
			"server_software"=>$_SERVER["SERVER_SOFTWARE"],
			"mysql_version"=>mysql_get_client_info(),
			"bcmath"=>(extension_loaded('bcmath')=="1")?"_YES":"_NO",
			"gmp"=>(extension_loaded('gmp')=="1")?"_YES":"_NO",
			"gd"=>(extension_loaded('gd')=="1")?"_YES":"_NO",
			"version_gd"=>$gd_version
		);
	$smarty->assign("php_settings",$php_settings);
	
	//clear smarty cache
	if(isset($_POST["clear"])) {
		if ( !has_access("prune_db") ) {
			header("Location: index.php");
			exit;
		}
		//special function available from smarty
		$smarty->clear_compiled_tpl();
		$user_msg="_CACHEDELETED";
	}
	//repair files db
	if(isset($_POST["file_repair"])) {
		$repaired=sql_get_files_count_fail(1);
	}
	//repair comments db
	if(isset($_POST["comment_repair"])) {
		$repaired=sql_get_comments_count_fail(1);
	}
	function db_size($name,$prefix) { 
		$sql = "SHOW TABLE STATUS FROM `" . $name. "` LIKE '".$prefix."_%'"; 
		if($query = @mysql_query($sql)) { 
			while($result = mysql_fetch_array($query)) {
				$tabledata[] = $result; 
			}
			$db_size = 0; 
			for($i=0; $i<count($tabledata); $i++) { 
				$db_size += $tabledata[$i]["Data_length"] + $tabledata[$i]["Index_length"]; 
			} 
			return $db_size; 
		} else { 
			return "_NOTAVAILABLE"; 
		} 
	} 
	function format_size($size) {
		if($size == "_NOTAVAILABLE"){ return "_NOTAVAILABLE"; }
		if($size >= 1073741824) { return round(($size / 1073741824), 2) . "GB"; } 
		elseif($size >= 1048576) { return round(($size / 1048576), 2) . "MB"; } 
		elseif($size >= 1024) { return round(($size / 1024), 2) . " KB"; } 
		else { return $size . " Byte"; } 

	}

	$version_info = "";
	$version_info = sql_get_version_info("web");
	$smarty->assign("version_info",$version_info);
	
	$smarty->assign("bans",array("count"=>sql_get_bans_count(0),"activ"=>sql_get_bans_count(1)));
	$smarty->assign("db_size",format_size(db_size($config->db_db,$config->db_prefix)));
	$smarty->assign("auto_prune",$config->auto_prune);
	$smarty->assign("comment_count",array("count"=>sql_get_comments_count(0),"fail"=>sql_get_comments_count_fail(0)));
	$smarty->assign("file_count",array("count"=>sql_get_files_count(0),"fail"=>sql_get_files_count_fail(0)));
	$smarty->assign("msg",$user_msg);

?>


access.ini
PHP:
<?php

/* 	

	AMXBans v6.0
	
	Copyright 2009, 2010 by SeToY & |PJ|ShOrTy

	This file is part of AMXBans.

    AMXBans is free software, but it's licensed under the
	Creative Commons - Attribution-NonCommercial-ShareAlike 2.0

    AMXBans is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    You should have received a copy of the cc-nC-SA along with AMXBans.  
	If not, see <http://creativecommons.org/licenses/by-nc-sa/2.0/>.

*/

session_start();
require_once("config.inc.php");
require_once("include/functions.inc.php");

function has_access($value) {
	if($_SESSION["loggedin"]) {
		return $_SESSION[$value]=="yes";
	}
	return 0;
}

if(isset($_COOKIE[$config->cookie]) && $_SESSION["loggedin"]==false) {
		$cook = explode(":", sql_safe($_COOKIE[$config->cookie]));
	
		$sid = $cook[0];
		if(!$_SESSION["lang"]) $_SESSION["lang"]=$cook[1];

		$mysql = mysql_connect($config->db_host,$config->db_user,$config->db_pass) or die (mysql_error());
		$resource = mysql_select_db($config->db_db) or die (mysql_error());

		if ( strlen( $sid ) >= 16  )
		{
			$query = mysql_query("SELECT id,username,level,email FROM `".$config->db_prefix."_webadmins` WHERE logcode='".$sid."' LIMIT 1") or die (mysql_error());
			if(mysql_num_rows($query)) {
				while($result = mysql_fetch_object($query)) {
					$_SESSION["uid"]=$result->id;
					$_SESSION["uname"]=$result->username;
					$_SESSION["email"]=$result->email;
					$_SESSION["level"]=$result->level;
					$_SESSION["sid"]=session_id();
					$_SESSION["loggedin"]=true;
				}
				$query = mysql_query("SELECT * FROM `".$config->db_prefix."_levels` WHERE level=".$_SESSION["level"]." LIMIT 1") or die (mysql_error());
				while($result = mysql_fetch_object($query)) {
					$_SESSION['bans_add'] = $result->bans_add;
					$_SESSION['bans_edit'] = $result->bans_edit;
					$_SESSION['bans_delete'] = $result->bans_delete;
					$_SESSION['bans_unban'] = $result->bans_unban;
					$_SESSION['bans_import'] = $result->bans_import;
					$_SESSION['bans_export'] = $result->bans_export;
					$_SESSION['amxadmins_view'] = $result->amxadmins_view;
					$_SESSION['amxadmins_edit'] = $result->amxadmins_edit;
					$_SESSION['webadmins_view'] = $result->webadmins_view;
					$_SESSION['webadmins_edit'] = $result->webadmins_edit;
					$_SESSION['websettings_view'] = $result->websettings_view;
					$_SESSION['websettings_edit'] = $result->websettings_edit;
					$_SESSION['permissions_edit'] = $result->permissions_edit;
					$_SESSION['prune_db'] = $result->prune_db;
					$_SESSION['servers_edit'] = $result->servers_edit;
					$_SESSION['ip_view'] = $result->ip_view;
				}
			}
		}
}
if(isset($_COOKIE[$config->cookie]) && $_SESSION["loggedin"]==true) {
	$query = mysql_query("UPDATE `".$config->db_prefix."_webadmins` SET `last_action`=UNIX_TIMESTAMP() WHERE `id`=".$_SESSION["uid"]);
}
/*				
if($_SESSION["sid"] != session_id()) {
	unset($_SESSION["uid"]);
	unset($_SESSION["uname"]);
	unset($_SESSION["email"]);
	unset($_SESSION["level"]);
	unset($_SESSION["sid"]);
	unset($_SESSION["loggedin"]);
}
*/
?>

Цялата система
 
Самите файлове статично ли ги викаш или динамично(всеки файл за себе си или в друг файл ги викаш чрез require/include) ? Проследи си кода(къде какво си извикал и т.н.) и виж къде могат да ти се дублират сесиите.

Ако имаш следното:

file1.php
PHP:
<?php
session_start();

...

file2.php
PHP:
<?php
session_start();

...


include "file1.php";
?>

ще ти даде грешка, че вече е стартирана сесията.
 
Проблемът е , че системата не е моя , а е готова и немога да ги проследя
Интересното е , че при WXP или W7 грешка няма само при Linux я вади...
 
Видях я цялата система. В ban_list.php имаш стартирана сесия. В него файл после викаш access.inc.php, в който пак стартираш сесия. Та махни сесията от access.inc.php или от ban_list.php . От едно от двете места я махни.

Под Windows и Linux има разлика, защото начините на компилиране на самия код е различен. Затова на едното място ти вади грешка, а на другото не.


ЕДИТ: Отвори ban_list.php, config.inc.php и access.inc.php. В ban_list.php и access.inc.php махаш session_start(). След това отваряш config.inc.php и най-отгоре(след <?php) слагаш session_start() и всичко трябва да е 6 точки.
 
relax4o каза:
Видях я цялата система. В ban_list.php имаш стартирана сесия. В него файл после викаш access.inc.php, в който пак стартираш сесия. Та махни сесията от access.inc.php или от ban_list.php . От едно от двете места я махни.

Под Windows и Linux има разлика, защото начините на компилиране на самия код е различен. Затова на едното място ти вади грешка, а на другото не.


ЕДИТ: Отвори ban_list.php, config.inc.php и access.inc.php. В ban_list.php и access.inc.php махаш session_start(). След това отваряш config.inc.php и най-отгоре(след <?php) слагаш session_start() и всичко трябва да е 6 точки.
Благодаря ще пробвам и ще пиша.
 
Това, което ти дадох, трябва да оправи проблема, който си дал в първия пост, но това не изключва и някъде другаде да ти изкара проблем. Не съм преглеждал абсолютно цялата система, прегледах единствено тези файлове, който ти казах да промениш.
Ако имаш после другаде проблеми, кажи.
 

Back
Горе