Constant a déjà défini PHP

J'ai un file de class appelé User.class.php et, dans cette class, j'ai ce code:

<?php define('__ROOT__', dirname(dirname(__FILE__))); require_once(__ROOT__.'/mysite/generic.php'); ?> 

J'ai un autre file, appelé signup.php, et j'ai besoin d'utiliser trois classs, donc j'ai un code qui ressemble à ceci:

 <?php define('__ROOT__', dirname(dirname(__FILE__))); require_once(__ROOT__.'/mysite/classs/dbhandler.class.php'); require_once(__ROOT__.'/mysite/classs/User.class.php'); require_once(__ROOT__.'/mysite/includes/password_hash.php'); ?> 

Chaque fois que je lance signup.php, j'avance cette erreur:

 Constant __ROOT__ already defined in signup.php 

J'ai essayé quelque chose de similaire, mais cela produit également la même erreur:

 <?php if(!defined('__ROOT__')) { define('__ROOT__', dirname(dirname(__FILE__))); } ?> 

Signup.php produit une erreur, mais exécute une requête d'insertion SQL. J'ai un autre file appelé sign_2.php, qui doit exécuter une requête SQL UPDATE, qui produit également la même erreur lorsque je l'exécute, mais n'exécute pas la requête UPDATE. Il exécute le code (pas de PDOException jeté), mais la requête n'affecte pas une seule ligne (et la requête fonctionne dans la console PhpMyAdmin SQL).

Je ne comprends pas le problème. La requête UPDATE dans signup_2.php ne fonctionne pas en raison de l'erreur constante, ou est-ce autre chose? La même erreur apparaît également lorsque signup.php est exécuté et que ce code exécute la requête INSERT parfaitement.

Il s'agit de la requête UPDATE dans signup_2.php:

 $username = $_POST['username']; $user_ip = $user->get_ip(); $activation_token = $_GET['token']; // Date time to be used instead of SQL's NOW() function for security purposes $datetime = date("Ymd H:i:s"); try { $sql = "UPDATE user SET username=:username, activation_token=:activation_token, activation_date_time=:activation_date_time, activation_status=:activation_status WHERE activation_token=:current_activation_token"; $stmt = $dbh->get_instance()->prepare($sql); $stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':activation_token', $empty_activation_token, PDO::PARAM_STR); $stmt->bindParam(':activation_date_time', $datetime, PDO::PARAM_STR); $stmt->bindParam(':activation_status', $active_status, PDO::PARAM_STR); $stmt->bindParam(':current_activation_token', $activation_token, PDO::PARAM_STR); $stmt->execute(); echo 'Username: ' . $username . '<br />'; echo 'Activation token: ' . $empty_activation_token . '<br />'; echo 'Activation date time: ' . $datetime . '<br />'; echo 'Activation status: ' . $active_status . '<br />'; echo 'Current activation token: ' . $activation_token . '<br />'; } catch(PDOException $e) { echo $e; } 

Tous les echo dans le bloc try sont exécutés et aucune exception n'est lancée, mais la requête ne semble rien faire. J'ai vérifié toutes les valeurs et j'ai fonctionné dans PhpMyAdmin.

Alors, qu'est-ce qui se passe ici? Je ne peux pas find le problème pour exécuter une simple requête UPDATE.

Supprimer la constante dans signup.php et signup_2.php produit l'erreur suivante:

 Use of undefined constant __ROOT__ - assumed '__ROOT__' in signup.php... 

J'ai essayé tout ce que je sais.

Votre class User.class.php a déjà

 define('__ROOT__', dirname(dirname(__FILE__))); 

supprimez ceci de signup.php car vous importez User.class.php et définissez une sorte de valeur constante qui ne peut pas être modifiée une fois définie.


Autre correction Créer un nouveau file appeler Constants.php

 define('__ROOT__', dirname(dirname(__FILE__))); 

maintenant le haut de chaque file

 include_once 'Constants.php'; 

Supprimez la define('__ROOT__') de User.class.php, vous le faites avant d'exiger une class d'user et la class la définisse de nouveau afin d'get une erreur déjà définie