Fonction introuvable PHP

[Résolu]
Signaler
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009
-
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009
-
Bonjour tout le monde,
Voila mon problème: J'ai un fichier "traitements.php" qui regroupe toutes mes fonctions. Dans un autre page je met donc require('traitements.php'); et j'appelle la fonction que je veux. Ici , c'est la fonction test_session. Mais quand  je m'en sers php me renvoie ce msg d'erreur: Fatal error: Cannot redeclare test_session() previously declared on line 4

D'habitude ça marche très bien je comprend pas le problème la...la ligne 4 est la ligne où je commence ma fonction dans le fichier "traitements.php".

Si quelqu'un sait, qu'il me le dise. Ca doit être tout bête maisje vois vraiment pas...

Merci

15 réponses

Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
En faisant ça il te renvoies toujours la même erreur ??
Sinon, regarde la fonction md5() ou sha1() pour crypter tes mots de passes :p

if( !function_exists('test_session') )
{
    function test_session($login, $password)
    {
        $result = mysql_query('SELECT login, password from utilisateur where login="' . $login . '" AND password="' . $password . '"') or die(mysql_error());
        $resultat = mysql_fetch_assoc($result);

        $resultlogin = $resultat['login'];
        $resultpassword = $resultat['password'];
        if ($resultlogin $login AND $resultpassword $password)
        {
            $_SESSION['utilisateur'] = $login;
            $_SESSION['motdepasse'] = $password;
            return 'ok';
        }
        else
        {
            return '<script language="text/javascript"> alert("Login ou mot de passe incorrect !!!"); </script>';
        }
    }
}
Fatal error: Cannot redeclare test_session() previously declared on line 4

A mon avis, ton erreur vient de ton fichier ou tu inclu traitement.php, puisqu'il dit impossible de re-déclarer la fonction test_session(), précedamment déclarée à la ligne 4.
Regarde plus loin dans ton code. Il n'y a pas un autre include 'traitement.php' ? (require())
<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

c'est bon jai trouvé...en fait je me sers de cette page pour reconduire vers une autre et ces deux pages avait le require('traitements.php') donc forcément la fonction était redéclarée comme le dit so bien le mesage d'erreur...c'est vraiment minutieux PHP..

Merci beaucoup Jojod'être venu amon secours encore une fois lol, et gagah d'avoir essayé de m'aider !!! Bonne journée !!
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

D'après l'erreur, c'est une inclusion multiple. Utilise require_once( ) au lieu de require( ).
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Non ca ne marche toujours pas... Est ce que ca peux venir du fait que j'aiun session_start ?
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Montre le bout de code.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

<? session_start();
require('traitements.php');  

if ($_POST['login']!= ='' and $_POST['password']!=='')
{
    $login=$_POST['login'];
    $password=$_POST['password'];
    $EtatConnexion= etat_connexion ();
    if ($EtatConnexion == "ok")
    {
        $resultat= test_session ($login,$password);
        if ($resultat =='ok')
        {on continue....

En gras c'est les fonctions que j'appelle...la 1ere ca passe mais pas la 2eme...
et ca c'est ma fonction test_session:

Function test_session($login,$password)
{
    $result=mysql_query("select login,password from utilisateur where login='".$login."' and password='".$password."'");
    $resultat=mysql_fetch_array($result);
    $resultlogin=$resultat[0];
    $resultpassword=$resultat[1];
   
    if ($resultlogin==$login and $resultpassword==$password)
    {
        $_SESSION['utilisateur']=$login;
        $_SESSION['motdepasse']=$password;
        return ('ok');
    }
    else
    {
        return ('<script language="Javascript"> alert("Login ou mot de passe incorrect !!!");
                </script>');
    };
};
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Peut etre test_session( ) est une fonction native de PHP. Essaie de modifier le nom de cette fonction.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

non c'est pas ça ...
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

J'ai regardé mais non, ce n'est pas une fonction native de PHP. Est-ce que dans le fichier traitement.php y a t-il une inclusion de fichier avant la ligne 4 où l'erreur se produit.
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Non non il n'y a rien avant...c'est pour ça que je trouve ça que je trouve ça bizarre.
Mais me le fais souvent en plus donc voila c'est un peu chiant. Je vois vraiment pas le problème...
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Le code parait bon.
J'ai remarqué que tu écris Function en majuscule au lieu de function pour déclarer une fonction. Je sais pas c'est peut-etre une erreur tout bête, un point-virgule ....
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Ce qui est bizarre, c'est que j'ai supprimé la fonction du fichier "traitements.php", et je l'ai mise au début de ma page où je l'appelle...et là ça marche !!
Mais bon, je ne veux pas faire comme ça parce que cette fonction je m'en sers souvent...et puis c'est pas vraiment le principe des fonctions de les déclarer à chaque fois !!!
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Salut,

bizare ... je ne vois pas non plus l'erreur.
Au pire des cas tu peux faire :

<?php
// ...

if( !function_exists('ma_fonction') )
{
    function ma_fonction()
    {
       // ...
    }
}

// ...
?>

<hr />Si ma reponse te convient, merci de l'accepter ! 
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Non toujours rien ...
Je crois que PHP ne m'aime pas !!!
Messages postés
86
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
19 juin 2009

Non ben ça me renvoie toujours le meme message d'erreur...il n'y a pas d'autres require ou include sur ma page...bizarre !!