Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Не видит параметры GET
Форумы портала PHP.SU » » Вопросы новичков » Не видит параметры GET

Страниц (1): [1]
 

1. MrSullex - 30 Января, 2016 - 06:55:23 - перейти к сообщению
Код почему то не видит параметры GET запросы. Перехожу по /account/register?refid=1 и в итоге значение 1 он не видит, а записывает значение 0. В чем проблема?

<?php
if($_GET['refid']){
$refid = $_GET['refid'];
}else{
$refid = "0";
}
?>

Вот что выводит var_dump($_GET);
array(1) { ["action"]=> string(16) "account/register" }
(Добавление)
Не много разъяснил для себя. Через echo значение refid передается, однако при записи в mysql записывает 0. Вот Структура поля user_refid. (int) 1 default 0. Я бы подумал на поле, но если задать любое число в переменную, то оно записывается.
2. Viper - 30 Января, 2016 - 09:05:56 - перейти к сообщению
3. DelphinPRO - 30 Января, 2016 - 09:23:33 - перейти к сообщению
MrSullex пишет:
Вот что выводит var_dump($_GET);
array(1) { ["action"]=> string(16) "account/register" }

Очевидно правила рерайта в вашем .htaccess перезаписывают QUERY_STRING

Напишите там корректные правила.
4. MrSullex - 30 Января, 2016 - 09:24:52 - перейти к сообщению
[quote=DelphinPRO][/quote]Вот мой .htaccess. Можете пожалуйста помочь?

# Установка кодировки
AddDefaultCharset utf-8

# Запрет листинга директории
Options -Indexes

RewriteEngine on

# Редирект с поддоменов
#RewriteCond %{HTTP_HOST} ^domain.ru
#RewriteRule (.*) http://domain[dot]ru/$1 [R=301,L]

# Настройки ЧПУ
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]
(Добавление)
Viper пишет:
var_dump($_REQUEST);
array(1) { ["action"]=> string(16) "account/register" }
5. DelphinPRO - 30 Января, 2016 - 12:23:12 - перейти к сообщению
MrSullex пишет:
RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]

ну вот. Строка параметров перезаписывается вашим ЧПУ

CODE (text):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ index.php?action=$1%{QUERY_STRING} [L,QSA]

или так
CODE (text):
скопировать код в буфер обмена
  1. RewriteRule ^(.*)$ index.php?%{QUERY_STRING}&action=$1 [L,QSA]


или еще как-то Улыбка я не помню точного синтаксиса
6. Prizma - 30 Января, 2016 - 13:26:48 - перейти к сообщению
MrSullex пишет:
Код почему то не видит параметры GET запросы. Перехожу по /account/register?refid=1 и в итоге значение 1 он не видит, а записывает значение 0. В чем проблема?
MrSullex пишет:
RewriteRule ^(.*)$ index.php?action=$1 [L,QSA]

короче ваш запрос преобразовывается к виду:
index.php?action=/account/register?refid=1
Если запрос будет такого рода, то параметры должны в $_GET появится:
/account/register&refid=1

Если же не хотите менять запрос сделайте вот так:
PHP:
скопировать код в буфер обмена
  1. $getString = explode('?',$_SERVER['HTTP_REFERER']);
  2. $getString = $getString[2];
  3. $getString = explode('&',$getString);
  4. $get = [];
  5. foreach($getString as $param) {
  6.     $param = explode('=',$param);
  7.     $get[$param[0]] = $param[1];
  8. }
  9. // Теперь в $get будут все ваши параметры переданные после ? в запросе
  10. // а в $_GET['action'] будет относительная ссылка на страницу без параметров

 

Powered by ExBB FM 1.0 RC1