8797 sujets

Développement web côté serveur, CMS

Bonjour,

j'utilise depuis pas mal de temps les switch et là il m'arrive un problème que je n'arrive pas à résoudre.

voila l'URL de base,

http://79.170.40.162/nomdedomaine.com/site/

ensuite l'URL modifié via Gandi

http://www.monsite.net

maintenant voilà le problème, mes " switch/case " ne fonctionnent plus et sont bloqué sur le " default: "

j'vais illustrer avec un exemple, mettons que j'ai :

www.monsite.net/index.php

ici le " default : " s'affiche normalement sans problème,

maintenant, en fesant www.monsite.net/index.php?affichage=connexion

l'URL reste comme il est mais la page reste sur " default : " bref ...

Je vous remercie d'avance de votre aide ! Smiley bawling
Modifié par eprom (27 Sep 2008 - 17:10)
hello,

De base comme ça, je ne vois pas vraiment ce qui pourrait bloquer ton switch sur le "default" appart l'équivalence qui ne correspond pas.

Plusieurs questions :
- As-tu testé ton code avec des simples if{}elseif{}?
- Pourrais-tu nous coller le code ton switch? Ca pourrait nous aider dans la recherche de ton problème.
Modifié par thoas (27 Sep 2008 - 17:32)
hi,

pour les if / elseif je préfère ne pas les utiliser vu le contenu que je compte mettre dans la page, la j'suis vraiment blazé parceque je viens de tester sur un autre ftp, donc même code mais sans redirection ou quoi, et ... ça marche.

pour le code j'ai réduit au max vraiment pour voir d'ou ça venait sans resultats, bref ...


switch ($affichage) 

           {

     default:
	 
	 echo("news, blahblah");

break;

     case "connexion":

         echo("bbbbbbbb");

break;
Bonjour

Je sais pas si il est conseillé de mettre le default en premier avant les autres cas. Ceci dit, je ne pense pas que ça soit forcement cela qui plante.

En revanche tu utilises


<?php

switch ($affichage) 

?>


Cela ne peut marcher seulement si tu as l'option REGISTER_GLOBAL à on dans le php.ini.
Sinon il faut effectuer le test sur $_GET['affichage'].

Le mieux restant de filtrer le contenu de GET avant d'utiliser ta variable pour éviter des problèmes de sécurité.

Bonne soirée
Salut,

Je ne suis pas sur pour le php mais en tous cas pour la programmation en C , il est fortement déconseillé de mettre le défaut en premier sous peine de voir le comportement souhaité modifié.

En effet ici tu met :



switch(...)
{
default: ....
             break;
case "..." : ...
break;
}


OR, le default n'a pas nécessairement besoin d'avoir un break, donc quand ton script passe dans le switch pour un case "connexion" , il voit direct le break destiné pour le defaut et la ton script ne fonctionne pas comme voulu.

Encore une fois je suis sur de ce que j'avance pour le C mais pas vraiment sur pour le PHP, néanmoins je pense que sa doit être similaire.

Bonne chance !
effectivement mes GLOBAL sont à off, ce qui n'est pas plus mal d'ailleurs et plus de problèmes avec mes switch / case.

Je te remercie! j'avais l'habitude de faire mes trucs sur un ftp free.
Essaye en faisant ça :


<?php

switch($_GET['affichage'])
{
     case 'connexion': include( 'connexion.php' );  break;
     case 'connexion1': include( 'connexion1.php' );  break;
     case 'connexion2': include( 'connexion2.php' );  break;
     case 'connexion3': include( 'connexion3.php' );  break;
    default: include( 'index.php' );
}

?>

Modifié par Odd (05 Oct 2008 - 16:27)
bonsoir,

je rapelle que "break" ne sert "qu'à " sortir du switch ; selon que .... faire ceci et sortir.
Si default est placé à la fin (et je ne vois pas pourquoi il serait placé autrement)
on est à la fin du block et donc on sort de toute façon ...