Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не передается текстовая переменная
 
 автор: Maloy   (26.05.2005 в 12:40)   письмо автору
 
 

Формируется ссылка содержащая такие переменные:
print "<td><a href=?st=35&table=$tb&id=$id>Delete</a></td>";
В строке состояния пишет:
localhost/index.php?st=35&table=store&id=53

Вроде все класно. Но переменная table не доходит....
echo "Table = $table and Id = $id";
$this->del_row($table, $id);
Выводит:
Table = and Id = 53
Что за хрень??? На моем компе все работало. Прикрепили к порталу и все. Я php.ini и httpd.conf сверял построчно. Одно и то же. Почему такая ... твориться. Ладно бы все не передавало. А то часть доходит, часть нет :(((

   
 
 автор: cheops   (26.05.2005 в 13:07)   письмо автору
 
   для: Maloy   (26.05.2005 в 12:40)
 

Может теряется где или перезаписывается переменная? В URL слово store точно присутствует - не может оно теряться при формировании ссылки?

   
 
 автор: Maloy   (26.05.2005 в 13:39)   письмо автору
 
   для: cheops   (26.05.2005 в 13:07)
 

Это необъяснимое явление. Типа НЛО или еще какой хрени... Может ЦРУ работает? :) Вообще глобальные переменные разрешены, цифры то передаются. Я сделал $_POST["table"]=$tb . И все заработало, чего и следовало ожидать.
Но, переменная $tb у меня уже была, а что делать если из формы переменные не передаются...?
Вот я формирую чекбоксы:
print "<td><input type=\"checkbox\" name=\"values[]\" value=\"$id\"></td>";
Получал скромный массив выбраных посредством нажатия кнопки Submit. Теперь ничего нет. Просто пустой массив... Чем это объяснить???

   
 
 автор: cheops   (26.05.2005 в 13:49)   письмо автору
 
   для: Maloy   (26.05.2005 в 13:39)
 

Хм... а вы не можете приложить код - давайте мы его потестируем, может удасться воспроизвести ситуацию. А на сервере другие проекты кроме вашего имеются? У них всё нормально или нет?

   
 
 автор: Maloy   (26.05.2005 в 14:02)   письмо автору
 
   для: cheops   (26.05.2005 в 13:49)
 

Да. Сервер корпоративный, делался на заказ. Причем очень хитро... Там довольно трудно понять что куда идет. Я просто сделал один файл, класс. Закрученый на себя и туда впихнул. На моем компе все работало отлично.
А тут такая хрень... У меня класс 45 Кб, я его сюда не затащу... Думал, может кто сталкивался.

   
 
 автор: glsv (Дизайнер)   (27.05.2005 в 07:43)   письмо автору
 
   для: Maloy   (26.05.2005 в 12:40)
 

Теряется только переменная table? Если сменить название, то что будет? Не пробовали?
Если теряется только переменная table, то можно предположить, что защита какая-то стоит на Apache, которая вырезает подозрительные слова из запроса. А table слово, несомненно, подозрительное, т.к. часто употребляется в атаках типа SQL-иньекций.

   
 
 автор: Maloy   (27.05.2005 в 11:45)   письмо автору
 
   для: glsv (Дизайнер)   (27.05.2005 в 07:43)
 

Вот кусок кода завязанный сам на себя. При нажатии показывает Table =


elseif ($st == 21) {
    $this->cont();
    echo "Table = ".$tab;
    if (!isset($table)) {
       echo '<FORM METHOD="post" ACTION="">';
       echo 'Виберіть таблицю:  <select name="tab" size="1">';
       echo '<option value="formul">Формуляр</option>';
       echo '<option value="izd">Издательство</option>';
       echo '</select>';
       echo '<input type="hidden" name="st" value=21>';
       echo '<input type="submit" value="Вибрать"></form>';

   
 
 автор: XPraptor   (27.05.2005 в 12:06)   письмо автору
 
   для: Maloy   (27.05.2005 в 11:45)
 

Так а где слово table в форме? Откуда оно должно появиться?

   
 
 автор: Maloy   (27.05.2005 в 12:18)   письмо автору
 
   для: XPraptor   (27.05.2005 в 12:06)
 

[code]
echo "Table = ".$tab;
if (!isset($table)) {
echo '<FORM METHOD="post" ACTION="">';
echo 'Виберіть таблицю: <select name="tab" size="1">';

   
 
 автор: glsv (Дизайнер)   (27.05.2005 в 21:44)   письмо автору
 
   для: Maloy   (27.05.2005 в 11:45)
 

А вот здесь не может затираться?

$this->cont()

Чистый эксперимент проводили? Т.е. только одна форма и больше ничего.

<?
    
echo "Table = ".$tab
    if (!isset(
$table)) { 
       echo 
'<FORM METHOD="post" ACTION="">'
       echo 
'Вибер_ть таблицю:  <select name="tab" size="1">'
       echo 
'<option value="formul">Формуляр</option>'
       echo 
'<option value="izd">Издательство</option>'
       echo 
'</select>'
       echo 
'<input type="hidden" name="st" value=21>'
       echo 
'<input type="submit" value="Вибрать"></form>';
    }
?>       

Если же и чистый эксперимент ничего не дает и register_globals разрешены в php.ini и они не переопределяется в виртуальных хостах и на apache не прилажен какой-нибудь хитрый модуль…, то приходится признать, что это аномалия.

PS: Так может плюнуть на это и использовать суперглобальные массивы POST - все равно это рекомендуется. Да и хостеры начинают отключать register_globals.

   
 
 автор: Maloy   (27.05.2005 в 13:20)   письмо автору
 
   для: Maloy   (26.05.2005 в 12:40)
 

Получается прикольная ситуация. global_register = On, но РНР это мало волнует, передает только цифры... Остальное нужно выковыривать $_POST["tab"].... Аномалия! :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования