Réunitialisation de la fonction.

Mammouth du PHP | 693 Messages

21 mai 2007, 19:01

Bonjour,

J'ai créé une fonction qui permet de consulter des données sur un serveur distant. Il faut cepandant que je sois connecté pour les avoir. Donc j'ai une autre fonction qui me connecte. Le problème, c'est comment faire pour faire redémarrer la fonction une fois qu'il y a eu la connexion ?

Je pensais un truc du style
function get($a)
 {if(!$connexion)
  {connxion();
   get($a);
 }
[...]
}
Cependant, est ce la meilleur méthode ? ($connexion est pour symobiliser l'existance de lé connexion) Et est ce que le retour des valeur fonctionne ?

Mammouth du PHP | 19672 Messages

21 mai 2007, 20:05

Une fonction est exécutée à chaque appel. Donc si tu en as à nouveau besoin, tu refais un appel avec l'envoi éventuels d'autres paramètres, tout simplement.

Mais je soupçonne autre chose à travers ta question, essaye de préciser un peu plus ce que tu veux pouvoir faire ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

21 mai 2007, 20:37

Quand j'utilise la fonction, j'appelle des données d'un serveur. Si je ne suis pas connnecté, les données seront d'un type défini donc j'utilise la fonction connexion(). Cependant, il faut je réappelle la fonction après pour avoir les bonnes données (et non le message m'indiquant que je ne suis pas connecté).

Est ce que ma solution est la bonne ?

Mammouth du PHP | 19672 Messages

21 mai 2007, 23:05

Je ne peux pas dire qu'elle soit mauvaise sans voir un peu plus de code :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

22 mai 2007, 13:26

Voici ma fonction.

Je ne sais pas trop si elle marche puisque jusqu'a présente je faisait la connexion à chaque appel et donc je pensais un peu optimiser (surtout que j'ai remarqué que les fonction cURL prennent pas mal de ressources)
function getdonnee($a)
{$curl=curl_init("www.unsite.com/donne.php?donne=$a");
curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
$page=curl_exec($curl);
if($page==$erreurpasconnecte)
	{connexion();
	getdonnee($a);}
elseif($page==$erreurnontrouvé)
	{return(FALSE);}
else
	{return($page);}
}

Mammouth du PHP | 19672 Messages

22 mai 2007, 14:11

D'abord, on ne met pas d'accent sur une variable ($erreurnontrouve et non $erreurnontrouvé).
Ensuite, Où sont donc initialisées les variables $erreurpasconnecte et $erreurnontrouve :?:
Enfin, écrit un code lisible. Faire compact, c'est bien, mais trop, c'est comme pas assez :
<?php
function getdonnee($a)
{
    $curl = curl_init("www.unsite.com/donne.php?donne=". $a);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);
    curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,TRUE);
    $page = curl_exec($curl);
    if($page == $erreurpasconnecte)
    {
        connexion();
        getdonnee($a);
    }
    elseif($page == $erreurnontrouve)
    {
        return(false);
    }
    else
    {
        return($page);
    }
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

22 mai 2007, 17:12

Les variables sont la pour indiquer les message d'erreur. Je les remplacerai dans le script final.

Sinon, est ce que mon rappell de la fonction est bien utilisé ?

Mammouth du PHP | 19672 Messages

22 mai 2007, 18:32

On ne peut pas te répondre sur du "peut-être plus tard quand j'aurais mis certains détails au point" Tu dois mettre les valeurs correspondant à tes variable et ne pas remettre à plus tard. Vouloir aller plus vite que la musique est complètement vain et va te faire perdre du temps.

Ensuite il manque ta fonction connexion() : à priori, je ne vois pas pourquoi ça ne fonctionnerait pas.

As-tu testé ce code et qu'as-tu obtenu ? es-tu satisfait ou non du résultat ou bien obtiens-tu des messages d'erreur : le cas échéant, lesquels ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

24 mai 2007, 09:53

Bon, mon code marchait sur mon serveur d'essai, et pas sur mon serveur free...

j'ai donc simplifier à l'extreme pour arriver à
$url = 'http://www.unsite.com/unepage.php';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($ch);
curl_close($ch);
echo $page;
Et la page reste désespérement blanche...

Mammouth du PHP | 19672 Messages

24 mai 2007, 12:27

Sur free.fr, il n'est pas certain que les extensions curl soient activées, vérifie donc dans le phpinfo...:-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 693 Messages

24 mai 2007, 12:47

Elle le sont...

CURL support enabled
CURL Information libcurl/7.15.4 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.3