web-dev-qa-db-ja.com

JinputがURLから2つの値の1つしか取得しないのはなぜですか?

JinputでURLから2つの値を抽出しようとしています。

私のURLは:

http://localhost/kitchen-guide-new/index.php?option=com_content&view=article&[email protected]&subscribers_name=test&encoding=UTF-8

次のコードを使用しています。

$jinput = JFactory::getApplication()->input;
$name = $jinput->get('subscribers_name','none','raw');
$email = $jinput->get('subscribers_email','none','raw');

echo $name;
echo $email;

問題は、最後の値しか取得できないことです。言い換えれば、私は得ています:

$name = 'test';
$email = 'none'; // (should be [email protected])

私が何を間違っているのか、どのように修正するべきですか?

1
Omri

あなたの問題は2番目の疑問符だと思います、リンクは

http://localhost/kitchen-guide-new/index.php?option=com_content&view=article&id=45&[email protected]&subscribers_name=test&encoding=UTF-8

1
Marko D

不正な形式のURLクエリ文字列が原因です。具体的には、2番目の?&である必要があります。

デモ

$url = 'http://localhost/kitchen-guide-new/index.php?option=com_content&view=article&[email protected]&subscribers_name=test&encoding=UTF-8';

parse_str(parse_url($url, PHP_URL_QUERY), $array);

var_export($array);

出力:

array (
  'option' => 'com_content',
  'view' => 'article',
  'id' => '[email protected]',
  'subscribers_name' => 'test',
  'encoding' => 'UTF-8',
)

ご覧のとおり、クエリ文字列の解析は、最初に発生する?に依存して、データの開始を指示します。キーと値のペアは=でバインドされ、&によって他のペアと分離されます。

入力ミスの結果、subscribers_emailキーと値がid値に追加されます。

1
mickmackusa