Peut-on faire un goto en php

Résolu
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 22 juin 2005 à 12:08
cs_New_World Messages postés 53 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 15 juillet 2010 - 28 avril 2010 à 20:00
Une petite question toute simple : peut-on faire un goto en php ?



Parce que dans mes pages c'est un embriquement de if et { et } y'en a
de partout, alors si goto existait ça me simplifierait la vie lol...

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html

32 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 juin 2005 à 16:18
Je te rassure, ca marche très bien :)

Je ne voyais pas l'interet de mettre un "or header()" si je ne l'avais pas testé auparavant :)



Et rien en t'empeche de faire un "or header('Location:erreur.php?type=1')" et dans ton fichier faire un :

switch($_GET['type']) {

case 1:

$output = 'Erreur de connection à la base de donnée';

break;

case 2:

$output = 'Erreur de sélection de base de donnée';

break;

}



Etc..etc, et même pouvoir ecrire dans un fichier de log :)
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
22 juin 2005 à 16:22
Oui mais header ne marche pas si du code html a déjà été envoyé au
poste client. Perso j'utilise une redirection javascript, j'ai une page
error.php et je lui envoie en parametre ?Descr= la description.

J'ai fait une fonction comme ça j'ai juste à faire tralala or Error('Erreur de tralala'); et c'est fini.



Enfin merci à vous pour m'avoir donné cette idée passke je viens juste de le mettre en place
Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
22 juin 2005 à 16:43
Généralement, quand tu te connectes à ta DB, tu le fais en début de page... environ en même temps qu'un session_start !

Donc le coup du header() mal placé, je comprend pas :o
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
22 juin 2005 à 16:52
bah au pire un ob_start() en haut et un ob_end_flush() tout en bas
permet de résoudre le problème des headers en début de page...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
22 juin 2005 à 17:07
Bah je me sert de cette page d'erreur pour d'autres erreurs aussi, pas seulement la DB

Ciaò
MadMatt
http://matthieu.napoli.neuf.fr/wintools.html
0
DJ_BoOmEr Messages postés 22 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 30 août 2007
24 janv. 2008 à 14:06
Hello, concernant l'"horreur" comme vous dites, eh bien, dans la version 6 de PHP, elle sera de retour, car contraire ment a ce que vous pensez ce n'est pas une horreur mas une chose tres utile ^^ par exempl lorsque vous utiliser la balise header(), vous devez la placer en debut de page (avant tout texte ou balise html) pour eviter les bugs, alors que des fois nous en avons besoin plus bas dans un code.

Mais la le GO TO sera utile ^^
0
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
24 janv. 2008 à 18:09
C'est fou comment j'avais complètement oublié cette discussion... Un goto en PHP, maintenant je vois bien pourquoi vous disiez que c'était une horreur héhé.

Mais tu dis que PHP 6 va avoir un Goto ?
Et je vois pas l'intérêt avec les header, si tu fais un goto débutdepage en fin de page, ça voudra dire que déjà toute ta page se sera déjà éxecutée et aura déjà été envoyée au navigateur, donc même si ton header est en début de page t'aura toujours le meme problème : les header auront déjà été envoyés.

Bref si t'as plus d'infos sur ça... Parce que ça m'a pas l'air utile

- MadMatt -

 www.choisir-une-entreprise.com
0
DJ_BoOmEr Messages postés 22 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 30 août 2007
24 janv. 2008 à 20:41
Ba l'utilité c'est par exemple pour ça :

<?php

Header( 'Refresh: 1; URL="mapage.php"');

diverses balises HTML et echo ""; en tout genre.

Ton script qui doit etre executer

Et la une ligne de code qui te permettrais a la fin de ton script de refresh sur une autre page ... donc tu as toujours la solution du <Meta> mais elle ne rentre pas dans les normes W3C, trop barbare :). donc la ton go to serai utile.

Je sais pas si c'est clair, mais j'ai un script sur lequel j'avais rencontrer ce probleme, si je le retrouve je le post ^^
0
sbsouba Messages postés 10 Date d'inscription mardi 16 octobre 2012 Statut Membre Dernière intervention 16 octobre 2012
1 avril 2008 à 14:10
bonjour a tous . je savais que la fonction goto n'exicte pas  mais  mon question s'il ya une autre fnct rassemble goto en php. merci d'avance slut
0
sidewalker Messages postés 20 Date d'inscription lundi 11 août 2003 Statut Membre Dernière intervention 11 juin 2009
11 juin 2009 à 12:09
Mes enfants, goto est ENFIN implémenté dans php 5.3!
goto __ROFL__
0
mafarette Messages postés 10 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 23 janvier 2010
20 janv. 2010 à 18:42
pierre mafarettecampus-descartes.org




bonjour suite a return 0 j'aimerais voir avec vous si ont peu das se programme qui marche tres bien peut t'on recomancer le programme si
$cible > $ciblefin ont arret le prog sinon ont add +1 dans $cible et ont recommance le programme :

<?php
/**
* Script d'envoi de textos depuis un compte SFR
* Envoi possible si le message ne dépasse pas 3 * 160 caractères (3 textos)
*
* @author Tristan F. <darkm60@gmail.com> http://esya-creations.com
* @version 1.0
* @todo Envoi de MMS/Tester les destinataires multiples/Tester vers l'étranger/Préciser les erreurs
*/


Define('AUTHENTIFICATION', 'http://www.sfr.fr/communiquer/messagerie/sfr-messagerie/authentification/');
Define('COOKIE_FILE','cookie.txt'); //Fichier COOKIE
Define('EMPTY_FILE',"emptyfile.txt"); //DOIT être un fichier vide
Define('USER_AGENT','Mozilla/5.0'); //User-agent
Define('LOGIN','06123456789'); //Login de votre compte SFR (Votre numéro)
Define('PASSWORD','1234'); //Password de votre compte SFR

$cible = "0611223344";
$message = "Message à envoyer";

if(send_sms($cible,$message)) echo("Texto envoyé !");
else echo("Impossible de trouver le token ou message trop long. Message non transmis. Mauvais logins ?");

/**
* Fonction d'envoi de sms
*
* @param int $cible Numéro de téléphone du destinataire
* @param int $message Message pour le destinataire. Supporte les accents. Jusqu'à 480 caractères.
* @return int 1 si succès 0 en cas d'échec.
*/
function send_sms($cible,$message)
{
//Encodage d
$message = utf8_decode($message);

$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, AUTHENTIFICATION);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, USER_AGENT);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

curl_close($ch);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.sfr.fr/cas/login?service=https://www.sfr.fr/j_spring_cas_security_check");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,"target=&_eventId=¤tPage=&username=".LOGIN."&password=".PASSWORD);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$ret = curl_exec($ch);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/index.do");


$ret = curl_exec($ch);

if ($ret === FALSE) {
die(curl_errno($ch));
}

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);

if(!isset($out[1]))
{
return 0;
}

$token = $out[1];

$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'galleryItem' => '-1',
'msisdns' => $cible,
'emails' => '',
'emoticones' => ':)',
'message' => $message,
'file' => '@'.realpath(EMPTY_FILE)
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/submit.do");
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath(COOKIE_FILE));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

preg_match("!"CSRFToken" value="([0-9]*)!",$ret,$out);
$token = $out[1];

//Confirmation
$array = Array(
"CSRFToken" => $token,
"idMessage" => '',
"submitMethod" => 'web',
"todo" => '',
"boxId" => 'sent',
'emoticones' => ':)',
'mms' => 'false',
'message' => $message
);

curl_setopt($ch, CURLOPT_URL, "http://www.sfr.fr/web-messagerie/mc/envoyer-texto-mms/confirm.do");
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$ret = curl_exec($ch);

curl_close($ch);

if(strpos($ret,"Le Texto a été expédié avec succès !") === false) return 0;
else return 1;

return 1;
}
?>
0
cs_New_World Messages postés 53 Date d'inscription mardi 15 août 2006 Statut Membre Dernière intervention 15 juillet 2010
28 avril 2010 à 20:00
c'est pas sorcier le goTo, vous pouvez créer une fonction goTo() par exemple qui contient vos codes dupliquer et l'appelé par la suite dans vos blocs. ;)
0
Rejoignez-nous