Class php
raphael94350
Messages postés
10
Statut
Membre
-
Azraka Messages postés 265 Statut Membre -
Azraka Messages postés 265 Statut Membre -
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
- Retour a la ligne php ✓ - Forum PHP
- Php alert ✓ - Forum PHP
- Alert PHP - 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;