Erreur php que je comprends pas
Posté : 12 janv. 2014, 20:22
Bonjour et bonne et heureuse nouvelle année à toute et à tous,
Voici mon souci, j'ai ce message d'erreur qui s'affiche : Parse error: syntax error, unexpected T_TRY in C:\wamp\www etc......
à cause de ce code :
Merci à celles et ceux qui pourront m'aider
Cordialement
Voici mon souci, j'ai ce message d'erreur qui s'affiche : Parse error: syntax error, unexpected T_TRY in C:\wamp\www etc......
à cause de ce code :
<?php
// Si le script est lancé depuis index.php alors on continue
if ($_SERVER['PHP_SELF'] == 'index.php') {
function get_ip() {
// IP si internet partagé
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
}
// IP derrière un proxy
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
// Sinon : IP normale
else {
return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
}
}
$ip=get_ip();
$timestamp=time();
// On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
$etat = "erreur";
// On récupère les champs du formulaire, et on arrange leur mise en forme
// trim() enlève les espaces en début et fin de chaine
if (isset($ip])) $ip=trim(htmlspecialchars($ip));
if (isset($timestamp)) $timestamp=trim(htmlspecialchars($timestamp));
// Après la mise en forme, on vérifie la validité des champs
// reception date
if (is_numeric($timestamp)) {
// On met dans erreur le message qui sera affiché
$erreur="Le timestamp ne contient pas que des chiffres...";
}
// On vérifie si l'adresse ip est sous la bonne forme
elseif (!preg_match('#^([0-9]{1,3}\.){3}[0-9]{1,3}$#', $ip)){
$erreur="Votre adresse ip n'est pas correct, elle doit être sous la forme 127.0.0.1";
}
// Si tous les champs sont valides, on change l'état à ok
else {
$etat="ok";
}
}
if ($etat=="ok"){
// Cas où le formulaire a été soumis mais il y a des erreurs
try
{
$bdd = new PDO('mysql:host=localhost;dbname=coiffure', 'root', '');
$bdd->query("SET NAMES UTF8");
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$res = $bdd->query('SELECT * FROM total_visiteur WHERE ip = "'.$ip.'"');
$requete = $res->fetch(PDO::FETCH_ASSOC);
$return = $res->fetch();
if($return['timestamp']+ 86400 > $timestamp)
{
}
elseif($return['timestamp']+ 86400 < $timestamp)
{
try
{
$bdd = new PDO('mysql:host=localhost;dbname=coiffure', 'root', '');
$bdd->query("SET NAMES UTF8");
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req = $bdd->prepare ('INSERT INTO total_visiteur(ID, ip, timestamp) VALUES(:ID, :ip, :timestamp)');
$req->execute(array(
'ID' => NULL,
'ip'=>$ip,
'timestamp'=>$timestamp));
}
else {
header('Location: index.php');
}
}
elseif ($etat=="erreur"){
// On affiche le message correspondant à l'erreur
echo "<h4>$erreur</h4>" ;
}
else {
header('Location: index.php');
}
?>
Pour la petite explication, c'est un compteur de visite total. Une adresse ip est comparé à ma bdd, si elle existe mais depuis plus de 24 heures, je considère que c'est une nouvelle visite alors j'ajoute en bdd sinon si elle existe depuis moins de 24 heures, je ne fais rien sinon j'ajoute en bdd. C'est à priori une erreur de synthaxe d'après ce que j'ai pu voir sur googleMerci à celles et ceux qui pourront m'aider
Cordialement