La fonction GET ($_GET) [Résolu]

Signaler
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
-
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
-
Bonjour,

Voila depuis peut de temps, je rencontre un petit problème sur mon site ...

Imaginons deux fichiers, un premier pour l'index et un second pour le support.

Mon index contient un formulaire de connexion et deux liens hypertexte (oublie de mot de passe et du login) :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<form method="post" action="connexion.php">






</form>
[support.php?action=passrecup Mot de passe oublié ?]

[support.php?action=loginrecup Nom de compte oublié ?]

</html>


Ensuite, ma page pour le support :

<?php
switch($_GET['action']){
case 'passrecup':
// Formulaire de récupération de mot de passe
exit;
case 'loginrecup':
// Formulaire de récupération du login
exit;
}
?>


Pour cette première partie, tous fonctionne correctement.
Mais imaginons maintenant qu'un onglet présent sur mon index permette aux clients d'accéder à "l'index" du support de cette manière :

[support.php Support]


Hélas, cela ne fonctionne pas comme je pouvais l'imaginer ...
Une erreur apparaît : Notice: Undefined index: action in C:\******* on line 3

Pour afficher "l'index" du support, je pensais procéder de cette manière :

<?php
switch($_GET['action']){
case 'passrecup':
// Formulaire de récupération de mot de passe
exit;
case 'loginrecup':
// Formulaire de récupération du login
exit;
}
?>
<center>Support
</center>
<!-- Reste de "l'index" du support -->


Comme vous pouvez le devinez, la fonction "exit;" me permet d’interrompre l’exécution du reste du code source pour faire en sorte que seul l'action souhaitée parmi les deux s’exécutent.
Mettre le contenu de "l'index" à la fin du code source, plus exactement en dessous du switch ($_GET['action']) permettrait de le faire exécuter que si le switch ne détecte rien (aucune case).

Si vous pensez me suggérez de mettre "l'index" du support dans une case du switch :
<?php
switch($_GET['action']){
case'passrecup':
// Formulaire de récupération de mot de passe
exit;
case'loginrecup':
// Formulaire de récupération du login
exit;
case'index':
?>
<center>Support
</center>
<!-- Reste de "l'index" du support -->
<?php
}
?>

Puis d'accéder à l'index de cette manière :
[support.php?action=index ]


Je suis conscient que cette solution aurait de très grandes chances de fonctionner mais je préfère s'avoir si ce problème pourrait ce résoudre autrement.

Merci,
Jérôme

4 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Perso, je procède toujours de cette manière :

<?php
$action = (isset($_GET['action']) ? $_GET['action'] : '');
switch ($action)
{
case 'passrecup':
// Formulaire de récupération de mot de passe
?>
<?php
break;
case 'loginrecup':
// Formulaire de récupération du login
?>
<?php
break;
default: //index
?>
<?php
}


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
12
Il s'agit d'une expression ternaire équivalente à :
<?php
if (isset($_GET['action'])) $action = $_GET['action']; else $action = '';


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
Merci pour ta réponse :)

Je ne comprend pas :

$action = (isset($_GET['action']) ? $_GET['action'] : '');

Pourrais-tu m'éclairer ?
Messages postés
120
Date d'inscription
dimanche 9 janvier 2011
Statut
Membre
Dernière intervention
23 décembre 2012
1
Je comprend mieux ^^

Merci :)