web-dev-qa-db-fra.com

Pourquoi Jinput n'obtient-il qu'une des deux valeurs de l'URL?

J'essaie d'extraire deux valeurs de l'URL avec Jinput.

Mon URL est:

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

J'utilise le code suivant:

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

echo $name;
echo $email;

Le problème est que je n’obtiens que la dernière valeur; En d'autres termes, je reçois:

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

Avez-vous une idée de ce que je fais mal et de la façon dont je devrais résoudre le problème?

1
Omri

Je suppose que votre problème est ce deuxième point d'interrogation, le lien devrait être

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

Votre chaîne de requête mal formulée est à blâmer - en particulier le second ? qui devrait être &.

démo :

$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);

Sortie:

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

Vous voyez, l'analyse de la chaîne de requête dépend du premier événement ? pour dicter le début des données. Les paires clé-valeur sont liées ensemble avec = et sont séparés des autres paires par &.

En conséquence de votre faute de frappe, le subscribers_email La clé et la valeur sont ajoutées à la valeur id.

1
mickmackusa