Class php
raphael94350
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
Azraka Messages postés 252 Date d'inscription Statut Membre Dernière intervention -
Azraka Messages postés 252 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une erreur dans mon code mais je ne l'as vois absolument pas il me marque :
syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/mnt/116/sdb/8/c/r.chemla/Geoip.class.php</b> on line <b>9
j'ai une erreur dans mon code mais je ne l'as vois absolument pas il me marque :
syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/mnt/116/sdb/8/c/r.chemla/Geoip.class.php</b> on line <b>9
<?php /* * Geoip.class.php * Classe d'utilisation de l'API geolocalise-ip.com * Compatible PHP 5+ **/ class Geoip { # Credentials private $email; private $pass; # URL de l'API public $endpoint; # Constructeur public function __construct() { $this->email = 'r.chemla@free.fr'; $this->pass = 'cnam2013'; $this->endpoint = "https://www.geolocalise-ip.com/api.php"; } # Set credential (private car confidentiel) public function setEmail($email = null){ $this->email = $email; } public function setPass($pass = null) { $this->pass = $pass; } # Query : retourne les infos de géolosalisation pour l'IP passée en paramètre public function query($ip) { # Check param if( empty($ip) ) { trigger_error("L'ip est vide.", E_USER_WARNING); return false; } # Appel de l'API $url = $this->endpoint.'?'.http_build_query(array( 'email' => $this->email, 'pass' => $this->pass, 'ip' => $ip )); $return['apiRequest'] = $url; $result = file_get_contents($url); if( $result == false || empty($result) ) { $return['erreur'] = 1; $return['erreur_msg'] = "API indisponible ($url)"; return $return; } $result = utf8_encode($result); $return['apiResponse'] = $result; # Decodage de la réponse # 1. Isolation du message d'erreur à la fin if( preg_match('#^(.*?&erreur=.*?)<(.*)$#i', $result, $matches) ) { $result = $matches[1]; $return['erreur_msg'] = '<'.trim($matches[2]); } # 2. Parse parse_str($result, $geo); # Retour $return = array_merge($return, $geo); return $return; } } ?>
A voir également:
- Class php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
- Php alert - Forum PHP
7 réponses
bonjour,
je dis peut être une bêtise mais je crois me souvenir qu'il faut attribuer une valeur aux variables de class à leur déclaration en php.
private $email = null; par exemple
je dis peut être une bêtise mais je crois me souvenir qu'il faut attribuer une valeur aux variables de class à leur déclaration en php.
private $email = null; par exemple
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pourquoi tu utilise # comme caractère de commentaire, tu en a marre des // ou du /* mon commentaire */ change on verra
tu veut avant la 9 et apres la 9 c'est ça ?
si oui je te met la 8 la 9 et la 10
# Credentials
private $email;
private $pass;
si oui je te met la 8 la 9 et la 10
# Credentials
private $email;
private $pass;
j'avais déjà fait l'essai le code modifié donne ça et toujours la même erreur en local ça marche mais en ligne toujours la même erreur
syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/116/sdb/8/c/r.chemla/Geoip.class.php on line 5
syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /mnt/116/sdb/8/c/r.chemla/Geoip.class.php on line 5
<?php class Geoip { private $email = "mail@mail.com"; private $pass = "motdepasse"; public $endpoint; public function __construct() { $this->email = 'r.chemla@free.fr'; $this->pass = 'cnam2013'; $this->endpoint = "https://www.geolocalise-ip.com/api.php"; } public function setEmail($email = null){ $this->email = $email; } public function setPass($pass = null) { $this->pass = $pass; } public function query($ip) { if( empty($ip) ) { trigger_error("L'ip est vide.", E_USER_WARNING); return false; } $url = $this->endpoint.'?'.http_build_query(array( 'email' => $this->email, 'pass' => $this->pass, 'ip' => $ip )); $return['apiRequest'] = $url; $result = file_get_contents($url); if( $result == false || empty($result) ) { $return['erreur'] = 1; $return['erreur_msg'] = "API indisponible ($url)"; return $return; } $result = utf8_encode($result); $return['apiResponse'] = $result; if( preg_match('#^(.*?&erreur=.*?)<(.*)$#i', $result, $matches) ) { $result = $matches[1]; $return['erreur_msg'] = '<'.trim($matches[2]); } parse_str($result, $geo); $return = array_merge($return, $geo); return $return; } } ?>
Quel sont les version de php de tes différents environnements ?
Ce que tu as fait marche très bien en php5, mais en php4 il n'y a pas de notion de visibilité, une variable de classe se déclare avec le mot-clé var.
Ce qui donnerait donc :
Ce que tu as fait marche très bien en php5, mais en php4 il n'y a pas de notion de visibilité, une variable de classe se déclare avec le mot-clé var.
Ce qui donnerait donc :
var $email = "mail@mail.com"; var $pass = "motdepasse"; var $endpoint;
oui c'était bien ça mais en fait il fallait juste mettre un .htaccess a la racine de mon ftp free .
Mais bon j'ai toujours un problème avec le http_build_query qui ne passe pas apparemment alors qu'en local tout fonctionne.
Je ne comprend vraiment pas
Mais bon j'ai toujours un problème avec le http_build_query qui ne passe pas apparemment alors qu'en local tout fonctionne.
Je ne comprend vraiment pas
alors la version c'est 5.1.3RC4-dev et le message d'erreur c'est un message personnalisé
mon code c'est
mon code c'est
# Appel de l'API $url = $this->endpoint.'?'.http_build_query(array( 'email' => $this->email, 'pass' => $this->pass, 'ip' => $ip )); $return['apiRequest'] = $url; $result = file_get_contents($url); if( $result == false || empty($result) ){ $return['erreur'] = 1; $return['erreur_msg'] = "API indisponible ($url)"; return $return; } $result = utf8_encode($result); $return['apiResponse'] = $result;