|
|
|
| Здравствуйте! При настройке вывода ошибки с помощью .htaccess то
получил на нормально работающем сайте scansorium.com целый букет 'страшных' ошибок!!!
одного типа:
Use of undefined constant xxxxx - assumed
Я подумал что это как то связано с выводом ошибок, а вернее с файлом
.хтаксэс, но после удаления желаемого результата не последовало. и до
сих пор не могу понять как ГЕТ переменная не может быть
определенна??! это ж не джава ее VARом объявлять!! Помогите,
пожалуйста! СПАСИБО | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 15:39)
| | Грамотно надо писать потому что.
Данная "ошибка" появляется если использовть $_GET[alpha] вместо $_GET['alpha']. | |
|
|
|
|
|
|
|
для: Волки
(16.07.2009 в 16:31)
| | это же не приципиально??! тем более не помогло!!! | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 16:39)
| | Сначала думал это из-за сложности скрипта.... однако написав совсем
ерундовый скрипт вида
<?
if (!$_GET[y])
$_GET[y]='uuuuuuБЛИН';
echo 'lf';
echo $_GET[y];
?>
Выводит:
Notice: Use of undefined constant y - assumed 'y' in /home/www/test.php on line 2
Notice: Undefined index: y in /home/www/test.php on line 2
Notice: Use of undefined constant y - assumed 'y' in /home/www/test.php on line 3
lf
Notice: Use of undefined constant y - assumed 'y' in /www/test.php on line 5
uuuuuuБЛИН | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 17:17)
| | Котлет нет... мухи погрызли
<?php
if(isset($_GET['y'])) $y=$_GET['y']; else $y="uuuuuBLIN";
echo $y;
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(16.07.2009 в 17:27)
| | а как это переписать?
if($_GET['id_menu']){$_GET['main_type']='article';}
|
| |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 19:26)
| | код написан верно зачем его переписывать? вопрос в том, насколько это необходимо присваивать переменной GET значение в коде, а не стандартным путем: file.php?main_type=article, может проще использовать обычные переменные, а не глобальные? | |
|
|
|
|
|
|
|
для: aetern
(16.07.2009 в 20:22)
| | Вы тоже из племени не боящихся notice? | |
|
|
|
|
|
|
|
для: root
(16.07.2009 в 20:26)
| | Я не вижу смысла в изменении значения переменной GET
if($_GET['id_menu']){$_GET['main_type']='article';}
|
а к вопросу о переписать, то может вот так:
if($_GET['id_menu'])
{
$main_type = 'article';
}
else
{
$main_type = $_GET['main_type'];
}
|
| |
|
|
|
|
|
|
|
для: aetern
(16.07.2009 в 20:37)
| | Вы видели что выше написал Valick?
Тяжело сделать по аналогии?
hint:
А если не будет ключа id_menu в массиве $_GET? | |
|
|
|
|
|
|
|
для: aetern
(16.07.2009 в 20:22)
| | дело в том что все отлично работало, когда хостился у одного провайдера, потом решил на более лучший хостинг перейти к другому провайдеру....сначало все хорошо было, однако как только попытался экранизировать ошибки через .htaccess появились проблемы с переменными, тогда я его удалил а проблемы остались....Я б конечно переписал, но скрипт довольно сложный многосоставный....я все таки еще верю что существуют более щядящие способы... может что-либо можно сделать через .htaccss ?? | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 19:26)
| | смысла в {$_GET['main_type']='article';} вообще я не вижу... для меня $_GET - это всё то что пришло из браузера, а присваивать ему какое-то значение несколько бредово.
Переписать трудно, ибо осмыслить это трудновато.
но вот то что в большинстве случаев вместо if($_GET['id_menu']) должно быть if(isset($_GET['id_menu'])) - л.д.м. аксиома. | |
|
|
|
|
|
|
|
для: Valick
(16.07.2009 в 23:21)
| | спасибо с этим понял, а вот как быть с отрицанием? if(!isset($_GET['id_menu'])) это снова выдает ошибку!!! как же сказать условие по всем канонам ЕСЛИ НЕ СУЩЕСТВУЕТ ПЕРЕМЕННОЙ ТО..? | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 23:34)
| | Какую ошибку? В if(!isset($_GET['id_menu'])) как таковой ошибки нет. Вы можете вообще написать так: if(!$_GET['id_menu']), и это будет тоже самое при ее отсутствии. | |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 23:34)
| | >спасибо с этим понял, а вот как быть с отрицанием? if(!isset($_GET['id_menu'])) это снова выдает ошибку!!! как же сказать условие по всем канонам ЕСЛИ НЕ СУЩЕСТВУЕТ ПЕРЕМЕННОЙ ТО..?
Абсолютно правильно пишете. Если после этой строки стоит хоть какой нибудь оператор - никакой ошибки не будет. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 23:55)
| | Уважаемые! Так что же делать? имею "правильный" скрипт:
<?session_start();
include("$_SERVER[DOCUMENT_ROOT]/server.info");
if(!($_GET))$_GET['main_type']='main';
if($_GET['id_menu']){$_GET['main_type']='article';}
if($_GET['id'])$_GET['main_type']='katalog';
if($_GET['id_name']){$_GET['main_type']='katalog';$_GET['main']=$_GET['id_name'];}
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/show_function.php");
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/serv_function.php");
datebase($exe_db);
?>
|
и на этом участке выходят следующие ошибки:
Notice: Undefined index: id_menu in /home/u188993/www/index.php on line 4
Notice: Undefined index: id in /home/u188993/www/index.php on line 5
Notice: Undefined index: id_name in /home/u188993//www/index.php on line 6
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 2
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: page in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: id_name in /home/u188993/www/part_html_new/title/article.php on line 3
|
| |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 07:38)
| | так а где во всех этих проверках isset() ? | |
|
|
|
|
|
|
|
для: Trianon
(17.07.2009 в 08:38)
| | ...неужели это так важно!?... я всегда считал что альтернатива записи:
if(isset($_GET['bla-bla']))
| является И мои предположения практическим путем были потвеждены....однако вчера....Неужели теперь это не так??? | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 23:55)
| | Уважаемые! Так что же делать? имею "правильный" скрипт:
<?session_start();
include("$_SERVER[DOCUMENT_ROOT]/server.info");
if(!($_GET))$_GET['main_type']='main';
if($_GET['id_menu']){$_GET['main_type']='article';}
if($_GET['id'])$_GET['main_type']='katalog';
if($_GET['id_name']){$_GET['main_type']='katalog';$_GET['main']=$_GET['id_name'];}
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/show_function.php");
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/serv_function.php");
datebase($exe_db);
?>
|
и на этом участке выходят следующие ошибки:
Notice: Undefined index: id_menu in /home/u188993/www/index.php on line 4
Notice: Undefined index: id in /home/u188993/www/index.php on line 5
Notice: Undefined index: id_name in /home/u188993//www/index.php on line 6
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 2
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: page in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: id_name in /home/u188993/www/part_html_new/title/article.php on line 3
|
Я уже и не знаю что и думать...тех поддержка попыталась это связать с несовпадением версий пхп, но на удивлении они совпадают... Что же МНЕ делать!?? | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 07:39)
| | if($_GET['id_menu']){$_GET['main_type']='article';}
if($_GET['id'])$_GET['main_type']='katalog';
if($_GET['id_name']){$_GET['main_type']='katalog';$_GET['main']=$_GET['id_name'];}
Вы считаете правильным? В смысле синтаксиса да, в смысле логики полная глупость.
А что делать, так вместо всего этого вывести массив $_GET на экран, вы хотя бы получаете его? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 07:49)
| | Я соглашусь на счет логики...но данный момент у меня единственная задача восстановить работу сайта, пока не обращая внимание на нерациональность скрипта... Ответ про массив: добавив следующие строчку:
получил
Array ( [main_type] => main ) 1
|
| |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 08:04)
| | Вот и разбирайтесь почему не приходят GET данные, если они вообще до этого скрипта действительно передаются. | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 08:06)
| | А если запрос например:
id_menu=25&ssd=41&type_ssd=1
|
То:
Array ( [id_menu] => 25 [ssd] => 41 [type_ssd] => 1 [main_type] => article ) 1
|
Однако те вышеописанные ошибки не пропадают... | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 08:10)
| | Вы напишите простой отдельный файлик, все лишь с несколькими строками:
<?
if ($_GET['as']) echo $_GET['as'];
?>
<a href="?as=25">Test</a>
|
забросьте на сервер, и посмотрите, тоже будет ругаться на переменную $_GET['as']? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 08:27)
| | Да ругается тем же матом при загрузки в браузере:
Notice: Undefined index: as in /home/u188993/www/index_33.php on line 2
Test
|
Однако при клике на ссылку пишет:
| |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 08:55)
| | Значит приходит все, не чего на сервер пенять, а вот так:
<?
if (isset($_GET['as'])) echo $_GET['as'];
?>
|
не должно и ругаться на неопределенную переменную.
PS. А какая версия РНР у вас? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 08:57)
| | да действительно не ругается....спасибо...получается надо все условия переписать.... а Версия 5.2.9.... Но меня все таки еще мучает тот вопрос...А ПОЧЕМУ ТАК СЛУЧИЛОСЬ? СКРИПТ ПРЕКРАСНО РАБОТАЛ НА МНОГИХ СЕРВЕРАХ РАЗНЫХ КОМПАНИЙ, А ТУТ РАЗ И К ПЕРЕМЕННЫМ ПРИДРАЛСЯ!? | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 09:16)
| | Значит так. Не могу сказать сейчас точно о версии, но вроде бы как это была 4-ая с хвостиком. В ней, если, например, не объявить массив до цикла, а непосредственно в цикле начать загружать этот массив данными, то есть:
for(...) {
$array[] = ...
}
получим ошибку о неопределенной переменной.
Есть isset, проверяйте. А то, что у вас даже при isset есть ошибки, говорит о том, что у вас бардак в логике переменных. От сюда и проблемы.
Вы сами подумайте, какой смысл отправлять в запросе переменную, если вы потом в скрипте присваиваете ей иной параметр? Можно еще понять, когда вы обработали принятую переменную, и результат этой обработки присвоили ей же, но то что вы делаете, ни в какие ворота. | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 08:10)
| |
<?session_start();
include("$_SERVER[DOCUMENT_ROOT]/server.info");
if(!($_GET))$_GET['main_type']='main';
if(isset($_GET['id_menu'])){$_GET['main_type']='article';}
if(isset($_GET['id']))$_GET['main_type']='katalog';
if(isset($_GET['id_name'])){$_GET['main_type']='katalog';$_GET['main']=$_GET['id_name'];}
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/show_function.php");
include("$_SERVER[DOCUMENT_ROOT]/login/admin/function/serv_function.php");
datebase($exe_db);
?>
|
PS А что вы ожидали от приведенного вами примера? | |
|
|
|
|
|
|
|
для: ride
(17.07.2009 в 08:35)
| | Я ожидал только одного: отсутствие ошибок!!! но этого не происходиТ | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 08:57)
| | А если запрос например:
id_menu=25&ssd=41&type_ssd=1
|
То:
//у вас буду доступны
$_GET['id_menu'],$_GET['ssd'],$_GET['type_ssd']
//и если вы допишите
$id_menu=$_GET['id_menu'];
$ssd=$_GET['ssd'];
$type_ssd=$_GET['type_ssd'];
//то проблем у вас не будет
|
А если запрос например:
То:
//у вас буду доступны только
$_GET['id_menu'],$_GET['ssd']
//и если вы допишите
$id_menu=$_GET['id_menu'];
$ssd=_GET['ssd'];
$type_ssd=$_GET['type_ssd'];//Здесь ваш notice, так как инденс type_ssd в $_GET не определен
//поэтому, прежде чем работать с переменной, вы должны проверить доступна ли она вообще:
if(isset($_GET['type_ssd']))//
$type_ssd=$_GET['type_ssd'];
else $type_ssd=1;
//
|
| |
|
|
|
|
|
|
|
для: BMW
(16.07.2009 в 15:39)
| | Я попытался исправить в соответсвии с советами которые ВЫ мне посоветовывали и написал следующее:
<?session_start();
if(isset($_GET['id_menu']))$_GET['main_type']='article';
else
if(isset($_GET['id']))$_GET['main_type']='katalog';
else
if(isset($_GET['id_name'])){$_GET['main_type']='katalog';$_GET['main']=$_GET['id_name'];}
else
$_GET['main_type']='main';
?>
|
Ошибка неопределенной переменной пропала, однако экранизируется следующее:
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 2
Notice: Undefined index: id_menu in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: page in /home/u188993/www/part_html_new/title/article.php on line 3
Notice: Undefined index: id_name in /home/u188993/www/part_html_new/title/article.php on line 3
|
| |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 09:33)
| | Опять у вас все через задницу. | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 09:35)
| | блин, ну почему? я же делаю проверку isset-ом всё(... | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 09:41)
| | Я вам выше сказал почему. У вас вместо логики бардак. Переписывайте и не смешите людей. ) | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 09:33)
| |
<?session_start();
if(isset($_GET['id_menu']))
//вместо $_GET['main_type']='article' пишите
$main_type='article';// и дальше работайте не с $_GET['main_type'] а с $main_type
?>
|
а по поводу ошибок - думаю, ошибки вызывают другие строки - не те, которые вы привели.
покажите первые строки из файла article.php | |
|
|
|
|
|
|
|
для: ride
(17.07.2009 в 09:50)
| |
<?
$id_menu=$_GET['id_menu'];
if(!($_GET['id_menu']) and !($_GET['page']) and !($_GET['id_name'])){$id_menu=4;}
if($id_menu){
echo '<title>'.$name_menu_n.'|'.$d_name.'|'.$description_menu_n.'</title>';
}
?>
| ТОесть сначала нужно переменную проверять прежде ее присваивать?? так японимаю? | |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 09:59)
| | $id_menu не может равно $_GET['id_menu'], пока это $_GET['id_menu'] не придет от клиента - нету до этого времени такой переменной! А это значит что? | |
|
|
|
|
|
|
|
для: sim5
(17.07.2009 в 10:01)
| | Ну это значит будет ошибка) Я ВСЕ ПОНЯЛ, СПАСИБО ))) ТЕПЕРЬ С ЭТИМИ ОШИБКАМИ ПОКОНЧЕННО....однако одна всего осталась.. но она довольно не информативная:
Fatal error: Cannot redeclare datebase() (previously declared in /home/u188993/www/login/admin/function/serv_function.php:5) in /home/u188993/login/admin/function/serv_function.php on line 26
|
При функции:
<?
/////////////////////////////////////////////////////////////////////////////////////////////
//////////////////ôóíêöèÿ âûáîðà áàçû/////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
function datebase($name_base)
{
$host = "xxxxxxxxxx";
$user = "u188993";
$pswd = "xxxxxxxxx";
// Èìÿ áàçû äàííûõ
$database = $name_base;
// Óñòàíîâèòü ñîåäèíåíèå ñ ñåðâåðîì MySQL
@mysql_pconnect($host, $user, $pswd) or die("Couldn't connect to MySQL server!");
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET collation_connection = 'cp1251_general_ci'");
mysql_query("SET collation_server = 'cp1251_general_ci'");
mysql_query("SET character_set_client = 'cp1251'");
mysql_query("SET character_set_connection = 'cp1251'");
mysql_query("SET character_set_results = 'cp1251'");
mysql_query("SET character_set_server = 'cp1251'");
// Âûáðàòü áàçó äàííûõ
@mysql_select_db($database) or die("Couldn't select database database!");
}
|
| |
|
|
|
|
|
|
|
для: BMW
(17.07.2009 в 10:29)
| | у вас функция datebase() определена не один раз
или же вы не один раз подлючаете файл /home/u188993/login/admin/function/serv_function.php | |
|
|
|
|
|
|
|
для: ride
(17.07.2009 в 10:33)
| | _ | |
|
|
|
|
|
|
|
для: ride
(17.07.2009 в 10:33)
| | спасииииииииииибо))) ВАМ большое - РАЗОБРАЛСЯ)) | |
|
|
|