par
Ryle » 25 mars 2015, 11:45
Hello !
Le problème ce coup-ci ne vient pas du GET qui est correct. Tu testes effectivement la présence de la valeur dans les données reçues avant de l'utiliser. Le message d'avertissement est d'ailleurs différent, ce n'est pas l'index "url" dans le tableau $_GET qui n'est pas définie, c'est la variable $url. La ligne de l'erreur est importante, car elle va t'aider à situer le problème.
Ta variable $url est effectivement bien définie dans ton code, mais pas dans tous les cas. Si l'action est meta_send, alors tu exécutes le if() et tu récupères bien la valeur passée en paramètre si elle existe. Jusque la pas de problème. Mais si l'action est meta_pass, ce code n'est pas exécuté. PHP va aller directement dans le elseif(), dans lequel tu utilises la variable $url qui pour lui n'est pas définie (puisqu'il n'a pas exécuter le code du if()
La solution la plus simple est donc de déclarer ta variable un peu avant, afin que celle-ci soit disponible dans tous les cas, le if ou le elseif, ou autre... et en fonction des données passées en paramètres elle sera définie et égale à la donnée utilisateur spécifiée, ou juste définie et égale à chaine vide si aucune donnée n'est reçue :
$url = isset($_GET['url']) ? $_GET['url'] : '';
if ( $_GET['action']=='meta_send' )
{
url_valide ( $url, true );
list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,true);
}
elseif ($_GET['action']=='meta_pass' )
{
list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,false);
};
Hello !
Le problème ce coup-ci ne vient pas du GET qui est correct. Tu testes effectivement la présence de la valeur dans les données reçues avant de l'utiliser. Le message d'avertissement est d'ailleurs différent, ce n'est pas l'index "url" dans le tableau $_GET qui n'est pas définie, c'est la variable $url. La ligne de l'erreur est importante, car elle va t'aider à situer le problème.
Ta variable $url est effectivement bien définie dans ton code, mais pas dans tous les cas. Si l'action est meta_send, alors tu exécutes le if() et tu récupères bien la valeur passée en paramètre si elle existe. Jusque la pas de problème. Mais si l'action est meta_pass, ce code n'est pas exécuté. PHP va aller directement dans le elseif(), dans lequel tu utilises la variable $url qui pour lui n'est pas définie (puisqu'il n'a pas exécuter le code du if() :)
La solution la plus simple est donc de déclarer ta variable un peu avant, afin que celle-ci soit disponible dans tous les cas, le if ou le elseif, ou autre... et en fonction des données passées en paramètres elle sera définie et égale à la donnée utilisateur spécifiée, ou juste définie et égale à chaine vide si aucune donnée n'est reçue :
[php]$url = isset($_GET['url']) ? $_GET['url'] : '';
if ( $_GET['action']=='meta_send' )
{
url_valide ( $url, true );
list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,true);
}
elseif ($_GET['action']=='meta_pass' )
{
list($url,$url_image,$nom_proprio,$email_proprio,$titre,$description) = preremplir_formulaire($url,false);
};[/php]