IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Utilisation d'une fonction


Sujet :

Langage PHP

  1. #1
    telodo
    Invité(e)
    Par défaut Utilisation d'une fonction
    Bonjour a toute la communaute !


    Explications :

    J'ai cree un fichier "fonctions.inc.php" et un fichier "formail.php".

    formail.php : Ce fichier me permet de recuperer les champs d'un formulaire. Puis d'envoyer un email. Tout fonctionne !

    fonctions.inc.php : Ce fichier contient toutes mes fonctions de recuperation d'information de mes visiteurs.

    Probleme :

    Je ne parviens pas a utiliser mon fichier "fonctions.inc.php" contenant toutes mes fonctions ! Lorsque je souhaites recuperer les variables dans le fichier "formail.php", impossible ! Je ne comprends pas d'ou vient mon erreur. Et je debute dans les fonctions...

    PS : Si je met l'integralite du fichier "fonctions.inc.php" directement dans "formail.php" tout fonctionne.

    Message d'erreur : Parse error: syntax error, unexpected $end in /mnt/167/sdb/b/d/cybercore/fonctions.inc.php on line 128

    A savoir que la ligne 128 du fichier "fonctions.inc.php" contient uniquement : ?>

    fonctions.inc.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
     
    <?
     
    function adresse_ip ()
    {
    	$adresse_ip = $_SERVER['REMOTE_ADDR'];
    	return ($adresse_ip);
    }
     
    function adresse_ip_reelle ()
    {
    	if (isSet($_SERVER)) {
        	if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
         		$adresse_ip_reelle = $_SERVER["HTTP_X_FORWARDED_FOR"];
        	} elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
        		$adresse_ip_reelle = $_SERVER["HTTP_CLIENT_IP"];
       		} else {
        		$adresse_ip_reelle = $_SERVER["REMOTE_ADDR"];
        	}
        } else {
        	if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
        		$adresse_ip_reelle = getenv( 'HTTP_X_FORWARDED_FOR' );
        	} elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
         		$adresse_ip_reelle = getenv( 'HTTP_CLIENT_IP' );
        	} else {
         		$adresse_ip_reelle = getenv( 'REMOTE_ADDR' );
        	}
    	}
    	return ($adresse_ip_reelle);
    }
     
    function nom_hote ()
    {
    	$nom_hote = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    	return ($nom_hote);
    }
     
    function systeme_exploitation ()
    {
    	if (ereg("Win", getenv("HTTP_USER_AGENT"))) {
    		$systeme_exploitation = "Windows";
    	} elseif ((ereg("Mac", getenv("HTTP_USER_AGENT"))) || (ereg("PPC", getenv("HTTP_USER_AGENT")))) {
      		$systeme_exploitation = "Mac";
    	} elseif (ereg("Linux", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "Linux";
    	} elseif (ereg("FreeBSD", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "FreeBSD";
    	} elseif (ereg("SunOS", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "SunOS";
    	} elseif (ereg("IRIX", getenv("HTTP_USER_AGENT"))) {
    		$systeme_exploitation = "IRIX";
    	} elseif (ereg("BeOS", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "BeOS";
    	} elseif (ereg("OS/2", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "OS/2";
    	} elseif (ereg("AIX", getenv("HTTP_USER_AGENT"))) {
      		$systeme_exploitation = "AIX";
    	} else {
      		$systeme_exploitation = "Autre";
    	return ($systeme_exploitation);
    }
     
    function navigateur ()
    {
    	if (ereg("Nav", getenv("HTTP_USER_AGENT"))) {
      		$navigateur = "Nav";
    	} elseif (ereg("Gold", getenv("HTTP_USER_AGENT"))) {
      		$navigateur = "Gold";
    	} elseif (ereg("X11", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "X11";
    	} elseif (ereg("Mozilla", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "Mozilla";
    	} elseif (ereg("Netscape", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "Netscape";
    	} elseif (!ereg("MSIE", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "InternetExplorer";
    	} elseif (ereg("Opera", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "Opera";
    	} elseif (ereg("MSIE", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "MSIE";
    	} elseif (ereg("Lynx", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "Lynx";
    	} elseif (ereg("WebTV", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "WebTV";
    	} elseif (ereg("Konqueror", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "Konqueror";
    	} elseif (eregi("bot", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - Bot";
    	} elseif (ereg("Google", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - Google";
    	} elseif (ereg("Slurp", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - Slurp";
    	} elseif (ereg("Scooter", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - Scooter";
    	} elseif (eregi("Spider", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - Spider";
    	} elseif (eregi("Infoseek", getenv("HTTP_USER_AGENT"))) {
    		  $navigateur = "BOT - InfoSeek";
    	} else {
    		  $navigateur = "Autre";
    	}
    	return ($navigateur);
    }
     
    function verif_navigateur ()
    {
    	$verif_navigateur = $_SERVER['HTTP_USER_AGENT'];
    	return ($verif_navigateur);
    }
     
    function date ()
    {
    	$date = date("d-m-Y");
    	return ($date);
    }
     
    function heure ()
    {
    	$heure = date("H:i");
    	return ($heure);
    }
     
    function url_base ()
    {
    	$url_base = $HTTP_REFERER;
    	return ($url_base);
    }
     
    ?>
    formail.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
     
    <h1>Contactez-moi</h1>
     
    <br />
     
    <?php
     
    // Vérification : si les champs existe et ne sont pas null
    if ( isset($_POST['pseudo']) && $_POST['pseudo'] != NULL )
    	{
    		$pseudo = $_POST ['pseudo'];
    	}
     
    // Vérification : si les champs existe et ne sont pas null
    if ( isset($_POST['email']) && $_POST['email'] != NULL )
    	{
    		$email = $_POST ['email'];
    	}
     
    // Vérification : si les champs existe et ne sont pas null
    if ( isset($_POST['sujet']) && $_POST['sujet'] != NULL )
    	{
    		$sujet = $_POST ['sujet'];
    	}
     
    // Vérification : si les champs existe et ne sont pas null
    if ( isset($_POST['message']) && $_POST['message'] != NULL )
    	{
    		$message = $_POST ['message'];
    	}
     
    // Récupération du contenu du fichier
    $email_encoded = file_get_contents("007.txt");
     
    // Décodage du texte récupéré avec ROT13
    $email_decoded = htmlentities(str_rot13($email_encoded));
     
    include ("fonctions.inc.php");
     
    	adresse_ip ();
    	adresse_ip_reelle ();
    	nom_hote ();
    	systeme_exploitation ();
    	navigateur ();
    	verif_navigateur ();
    	date ();
    	heure ();
    	url_base ();
     
    	$fichier = ("$date $heure $pseudo.html");
    	$urlfichier = ("contact/$fichier");
    	$donnees=("<font face='Verdana' size='2'>
    			Le $date à $heure<br />
    			<br />
    			Pseudonyme : $pseudo<br />
    			Sujet : <i>$sujet</i><br />
    			<br />
    			$message<br /><br /><br />
                ------------------------------------------------------------ <br />
                Adresse IP : $ip <br />
                IP Reelle : $realip <br />
                HostName : $host <br />
                <br />
                Systeme d'exploitation : $os <br />
                Navigateur : $navigateur <br />
                Verification : $nav <br />
                <br />
                Date : $date <br />
                Heure : $heure <br />
                <br />
                Depuis : $url <br />
                ------------------------------------------------------------
    			</font>");
     
    // Envois de l'email
    if ( mail ( $email_decoded,$sujet,$donnees ) )
    	{
    		// Si l'email à bien été envoyé
    		echo ("<table><tr><td><font color='green'><strong>Le mail a été envoyé !</strong></font></td></tr>");
    		echo ("<tr><td>&nbsp;</td></tr>");
    		echo ("<tr><td><strong>$pseudo</strong></td></tr>");
    		echo ("<tr><td><i>$sujet</i></td></tr>");
    		echo ("<tr><td>&nbsp;</td></tr>");
    		echo ("<tr><td><div align='justify'>$message</div></td></tr></table>");
     
    // Ouvre et créer si il n'existe pas, un fichier en écriture
    $fp = fopen ($urlfichier, "a");  
    // Ecriture dans le fichier
    fputs($fp,$donnees);
    // Fermeture du fichier
    fclose($fp);
     
    	}
    else
    	{
    		// Si l'email n'à pas bien été envoyé
    		echo ("<table><tr><td><font color='red'><strong>Le mail n\'a pu être envoyé !</strong></font></td></tr>");
    		echo ("<tr><td>&nbsp;</td></tr>");
    		echo ("<tr><td><strong>$pseudo</strong></td></tr>");
    		echo ("<tr><td><i>$sujet</i></td></tr>");
    		echo ("<tr><td>&nbsp;</td></tr>");
    		echo ("<tr><td><div align='justify'>$message</div></td></tr></table>");
    	}
     
    ?>
    En vous remerciant d'avance de votre precieuse aide !
    CyberCore
    Dernière modification par telodo ; 26/10/2008 à 19h57.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 254
    Points : 15 557
    Points
    15 557
    Par défaut
    tu as commencé ton fichier par "<?", essaie de mettre "<?php" à la place

  3. #3
    telodo
    Invité(e)
    Par défaut
    Hélas même problème.

    Parse error: syntax error, unexpected $end in /mnt/167/sdb/b/d/cybercore/fonctions.inc.php on line 128

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 254
    Points : 15 557
    Points
    15 557
    Par défaut
    ligne 58 il manque une accolade fermante pour le dernière "else"

  5. #5
    telodo
    Invité(e)
    Par défaut
    Oh quelle erreur idiote !

    Je viens de corriger cette erreur, (accolade ligne 58 apres else).

    Cependant un autre probleme survient. Je ne peux pas redefinir la fonction date(). Du coup pour eviter les ennuis j'ai place seulement la declaration des variables dans "formail.php" et je n'ai plus d'erreur.

    Donc me voici avec des fichiers qui ne me genere plus aucunes erreurs ! De plus je recois bien l'email...

    Autre probleme : (ce serait trop facile sinon )

    Eh bien, lorsque je recois l'email... Tout simplement je n'ai aucunes des infos (que dois me fournir mon fichier "fonctions.inc.php").



    J'ai pourtant bien suivis les cours sur differents sites pour utiliser les fonctions. Mais rien n'y fait ! Je n'arrive pas a recuperer la valeure les variables de mon fichier "fonctions.inc.php". J'avoue que je ne comprends pas vraiment ? Si on n'utilise pas de fonction (ce qui serait dommage), n'y a t'il pas un autre moyen pour les inclures dans mon fichier "formail.php" sans avoir a placer TOUT le code ?


  6. #6
    Membre confirmé Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Points : 547
    Points
    547
    Par défaut
    Prenons une de tes fonctions :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function nom_hote ()
    {
    	$nom_hote = gethostbyaddr($_SERVER['REMOTE_ADDR']);
    	return ($nom_hote);
    }

    voyons le code où tu appelles cette fonction :


    il y à un problème là !

    ta fonction retourne la variable $nom_hote, cela dit, la fonction ne va pas te créer la variable $nom_hote au sein même de ton code, sa durée de vie est égale à celle de la fonction. Une fois la fonction terminé, la variable $nom_hote est supprimé. Mais si on appelle cette fonction comme ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_hote = nom_hote ();

    Dans ce cas, la variable $nom_hote, dans ton code, prendra pour valeur celle de la fonction nom_hote();

    une variable créée dans une fonction est dite locale. Pour qu'elle puisse vivre en dehors de cette fonction, elle se doit d'être globale !

    Exemple :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $prenom = 'Anthony';
     
    function ChangePrenom() {
    $prenom = 'Clémence';
    }
     
    echo $prenom;
    ChangePrenom();
    echo '<hr />';
    echo $prenom;

    je rajoute le mot clé global :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $prenom = 'Anthony';
     
    function ChangePrenom() {
    global $prenom;
    $prenom = 'Clémence';
    }
     
    echo $prenom;
    ChangePrenom();
    echo '<hr />';
    echo $prenom;

    Magie!


    Une autre technique consiste à faire passer une variable par référence

    Un exemple vaut mieux que toute explication :


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $prenom = 'Anthony';
     
    function ChangePrenom($prenom) {
    $prenom = 'Clémence';
    }
     
    echo $prenom;
    ChangePrenom($prenom);
    echo '<hr />';
    echo $prenom;



    J'utilise le & signifiant que la variable est passée par référence :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $prenom = 'Anthony';
     
    function ChangePrenom(&$prenom) {
    $prenom = 'Clémence';
    }
     
    echo $prenom;
    ChangePrenom($prenom);
    echo '<hr />';
    echo $prenom;

    Magie !

    j'espère que tu as maintenant compris le sens des fonctions , et par là même occasion du mot clé Return
    I don't know what will be used in the next world war, but the 4th will be fought with stones. - Albert Einstein
    Pour détourner un avion, il faut monter dedans - Frédéric beigbeder

  7. #7
    telodo
    Invité(e)
    Par défaut
    Merci beaucoup SphynXz !

    Et merci aussi a mathieu !

    C'est impeccable, tout fonctionne. La fonction fonctionne ! Mais, avant tout, j'ai tres bien compris l'utilisation des fonctions. En theorie. Il ne me reste plus qu'a le mettre en application puis je passerais a l'etape superieure : les classes !

    Merci encore a la communaute !
    CyberCore

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/06/2006, 15h37
  2. Réponses: 3
    Dernier message: 29/04/2006, 13h02
  3. Réponses: 3
    Dernier message: 14/04/2006, 19h36
  4. Utilisation d'une fonction Transact-SQL ds une requête SQL
    Par Fl0ppeur dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/02/2006, 13h42
  5. Utilisation d'une fonction dans une procedure
    Par MaxiMax dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 09/08/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo