La fonction GET ($_GET)

Résolu
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 - 27 juin 2012 à 22:21
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 - 29 juin 2012 à 12:56
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 juin 2012 à 10:02
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
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
28 juin 2012 à 19:10
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
3
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
28 juin 2012 à 16:14
Merci pour ta réponse :)

Je ne comprend pas :

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

Pourrais-tu m'éclairer ?
0
Jeromedu79 Messages postés 119 Date d'inscription dimanche 9 janvier 2011 Statut Membre Dernière intervention 23 décembre 2012 1
29 juin 2012 à 12:56
Je comprend mieux ^^

Merci :)
0
Rejoignez-nous