Ошибки и неработоспособность некоторый ф-й при смене сервера

Статус
В этой теме нельзя размещать новые ответы.

mydobermann

Создатель
Регистрация
1 Дек 2007
Сообщения
32
Реакции
2
Сменив сервер (был, к слову сказать, ПХП4, теперь - 5ка), на сайте проявляются некоторые неработоспособные функции.
В частности, так как сайт является интернет-магазином, товары, при нажатии соответствующей ссылки, перестали добавляться в корзину.

Код элемента ссылки "Заказать" одного из товаров:
Код:
<img src="http://www.******.***.**/box.php?config=order&amp;id=1653776" border="0" style="cursor:hand;" onclick="src='http://www.******.***.**/box.php?config=order&amp;id=1653776'">
Куда копать?
Код файла box.php:
Код:
<?
//error_reporting(E_ALL);
//print '1111';
extract ($_GET);
$page='index.php';
$folder_programm_admin='admin/programm';
$folder_programm="programm";
$folder_resource="resource";
$folder_config=$folder_resource."/config";
//require_once('Mail.php');
//include('Mail/mime.php');
include($folder_programm."/blockz.php");
$mysql=new Mysql;
$mysql->start();
$box=new Box;
$box->start();
$mysql->stop();
?>
 
Надо раскомментировать строку //error_reporting(E_ALL); , т.е
поменять на error_reporting(E_ALL); и посмотреть выдаст ли интерпретатор ошибку.
Также можно посмотреть класс Box.
 
Надо раскомментировать строку //error_reporting(E_ALL); , т.е
поменять на error_reporting(E_ALL); и посмотреть выдаст ли интерпретатор ошибку.
Также можно посмотреть класс Box.
Я так понимаю, это аналог опции display_errors в PHP?, если так, то там теже ошибки что и до переезда :) но на старом сервере, как я писал выше - все добавлялось " в корзину "
На сервере есть еще один файл box, подозреваю что обращение идет к нему:
Код:
<?php
extract($_GET, EXTR_SKIP);
class Box {
	var $IDGOODS;
	var $UNICLIENT;
	var $DESIGEN;
	function Box() {
		GLOBAL $UNICLIENT;
		$this->UNIC=$UNICLIENT;
	}
	//+------------------------------------------------------------------+
	// ADMIN FUNCTIONS
	//+------------------------------------------------------------------+
	function order($idgoods) {
		return '<img src="http://www.*****.***.**/resource/img/magazine/zakaz_<?php
if($box->detectGoods("'.$idgoods.'")) {print "1";}
else {print "0";}
?>.gif" border="0" style="cursor:hand;" onClick="src=\'http://www.*****.***.**/box.php?config=order&id='.$idgoods.'\'">';
	}
	function orderBox($idgoods) {
		if($this->detectGoods($idgoods)) {$typezakaz="1";}
		else {$typezakaz="0";}
		return '<img src="http://www.*****.***.**/resource/img/magazine/zakaz_'.$typezakaz.'.gif" border="0" style="cursor:hand;" onClick="src=\'http://wwww.*****.***.**/box.php?config=order&id='.$idgoods.'\'">';
	}
	//+------------------------------------------------------------------+
	function start() {
		GLOBAL $config;
		switch($config) {
		case("presenthelp"):
			$news=new News;
			$this->BODY=$news->start("presenthelp",0);
			break;
                case("day"):
			$news=new News;
			$this->BODY=$news->start("day",0);
			break;		
		case('order'):
			$this->workOrder();
			break;
		case('printed'):
			$this->printedBox();
			break;
		case('Изменить')://change
			$this->changeInfoBox();
			break;
		case('Отправить заказ')://send
			$this->changeInfoBox();
			$this->sendBox();
			break;
		case('test'):
			print "<b>COOKIE</b>:[".$this->UNIC."]";
			break;
		case('empty'):
			setcookie('UNICLIENT');
			print "<b>UNICLIENT <font style='color:red;'>deleted</font></b>";
			break;
		default:
			$this->printedBox();
		}
	}


	//+------------------------------------------------------------------+
	// ORDER BLOCK
	//+------------------------------------------------------------------+
	function workOrder() {
		GLOBAL $id;
		$this->IDGOODS=ereg_replace("\+"," ",$id);
		if($this->detectUNIClient()) {
			if ($this->detectGoods($id)) {
				$this->delOrder();
			}
			else {
				$this->addOrder();
			}
		}
		else {
			$this->createUNIClient();
			$this->addOrder();
		}
	}

	function addOrder() {
		$this->addGoods();
		header("Location: http://www.*****.***.**/resource/img/magazine/zakaz_1.gif");
	}

	function delOrder() {
		$this->delGoods();
		header("Location: http://www.*****.***.**/resource/img/magazine/zakaz_0.gif");
	}
(и далее.....)
 
Код элемента ссылки "Заказать" одного из товаров:
Код:
<img src="http://www.******.***.**/box.php?config=order&amp;id=1653776" border="0" style="cursor:hand;" onclick="src='http://www.******.***.**/box.php?config=order&amp;id=1653776'">

это "код" изображения, при клике по по которому ссылка на изображение заменяется на ту же самую ссылку -)

и так как адрес на box.php используется как "ссылка на изображение", то файл box.php по всей видемости должен отдавать картинку ... хотя по его содержимому и не скажешь ....

да и как-то не логично чтоб 1 файл отдавал изображение и добавлял что-то в корзину .... хотя принцыпи все зависит от автора проекта ....

=========

скорее всего кусок кода который вы привели выше обрамляет ссылка ... тоесть что-то типа

Код:
 <a href="http://www.... "> <img *** это типа ваш код **/></a>

и вот тот адрес который указан в <a href="***** и есть ссылка на ваш обработчик который добавляет что-то в корзину ....
или же он через джаву навешивается....и так фиг увидишь...

===========
по тому что видно можно предположить что не работает из-за замены знача & на спецсимвол &amp;
box.php?config=order&amp;id=1653776 ...
т.е в обработчик попадает не переменная "id", а переменная "&amp;id" ...
чтоб проверить выведите данные из гет-масива
print_r($_GET) и посмотрите что в него попадает .... если конечно это не через аякс делается ...

===========
забавный у вас магазин...
Код файла box.php:
Код:
<?
....
...
extract ($_GET); /// а особенно это место 
$page='index.php';
...
.... 
?>

если к примеру чуть выше определяется переменная к примеру
$password_admin ="jshf83489*(#@&#@$";

а кто-то вызовет скрипт box.php следующим образом
www**********ru/box.php&password_admin=123
то вызов ф-ции extract ($_GET); затрет переменную password_admin и она будет равна "123"

и может даже удастся войти в админку с паролем 123 :)

---------- Post added at 19:58 ---------- Previous post was at 17:59 ----------

посмотрел ваш сайт ... короче то что я говорил фигня и дело не в нем


насколько я понял то обновляются добавленные данные в корзину ... т.е при входе в корзину все что вы в нее добавили обнуляется ...
обнуляется даже при банальном обновлении страницы с выбранными товарами ..
но кукисы в браузере сохраняются ( хотя и при каждом добавлении товара изменяются ... не уверен что так и должно быть ...)
но если пройти по ссылке
*****.***.**/box.php?config=test

то получается что в класс Box они уже не попадают ( ну и в корзину видат ьтоже )


короче покажите кусок кода где формируется переменная $UNICLIENT;

ну и класс Box бы побольше увидеть ... хотя-бы методы
createUNIClient, detectUNIClient, delOrder, addOrder, detectGoods


ЗЫ: а прогер который вам делал сайт видать только узнал модное слово ООП и начал его применять
 
По-моему проблема в глобальных переменных, в частности $UNICLIENT. Можно попробовать вместо строки extract($_GET, EXTR_SKIP); написать extract($_REQUEST, EXTR_SKIP); или
Код:
extract($_SERVER, EXTR_SKIP);
extract($_SESSION, EXTR_SKIP);
extract($_COOKIE, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
extract($_GET, EXTR_SKIP);
 
Помогла эта строчка extract($_REQUEST, EXTR_SKIP);
Страницы нормально открываются, в корзину товары добавляются, формы (по нажатии кнопки под ней) - сохраняются, НО по поводу последнего..
Форма сохраняется, но весь русский текст коверкается в знаки вопросов (??????), хотя изменения оно сохраняет в соответствующей таблицы базы данных.
Добавил в "шапку" шаблона вывода страницы
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">, в базе данных выставил кодировку всех таблиц cp1251_general_ci, но все это все-равно не помогло.. страница, после сохранения, и перезагрузки выглядит нормально, а вот текст в форме (там где русские буквы) - в знаках вопроса. Куда копать далее?

ps. Если текст непосредственно поправить в базе данных чере ПХПмайадмин - все нормально, но если отправить через форму на сайте - русский текст коверкает в вопросы (??????)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху