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

Тема в разделе "PHP", создана пользователем mydobermann, 7 авг 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. mydobermann

    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();
    ?>
     
  2. lwdip

    lwdip Писатель

    Регистр.:
    29 июн 2010
    Сообщения:
    5
    Симпатии:
    1
    Надо раскомментировать строку //error_reporting(E_ALL); , т.е
    поменять на error_reporting(E_ALL); и посмотреть выдаст ли интерпретатор ошибку.
    Также можно посмотреть класс Box.
     
  3. mydobermann

    mydobermann Создатель

    Регистр.:
    1 дек 2007
    Сообщения:
    32
    Симпатии:
    2
    Я так понимаю, это аналог опции 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");
    	}
    (и далее.....)
     
  4. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    364
    Симпатии:
    117
    это "код" изображения, при клике по по которому ссылка на изображение заменяется на ту же самую ссылку -)

    и так как адрес на 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


    ЗЫ: а прогер который вам делал сайт видать только узнал модное слово ООП и начал его применять
     
  5. lwdip

    lwdip Писатель

    Регистр.:
    29 июн 2010
    Сообщения:
    5
    Симпатии:
    1
    По-моему проблема в глобальных переменных, в частности $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);
    
     
  6. mydobermann

    mydobermann Создатель

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

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

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
Статус темы:
Закрыта.