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 :

A propos du PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Sans emploi
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut A propos du PHP
    Bonsoir,

    J'aurais plusieurs questions à propos du langage PHP.

    Je dispose des fichiers index.php et contact.php.

    Dans index.php, j'ai un formulaire de contact dont les données sont soumises à contact.php (fonction mail(), etc.). Cependant, pour notifier à l'utilisateur que son message m'est bien parvenu (ou pas!), le script génère les phrases qui vont bien.

    Mais j'aime pas trop. Ce que je voudrais, c'est que le message s'affiche directement dans mon index.php, sous mon formulaire de contact. Est-ce possible ?

    Une autre question. Vaut-il mieux intégrer toutes les "fonctions" PHP dans l'index.php ou bien les mettre séparément dans des fichiers (contact.php, audience.php...), ou encore les mettre dans un fichier à part fonctions.php ?

    Merci pour vos réponses !
    Bonne soirée.
    Che57

  2. #2
    Membre à l'essai
    Homme Profil pro
    Sans emploi
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    J'ai fais un essai avec mon index.php et contact.php à part.

    Voici une partie de mon index.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
    <form name="formulaire" method="post" action="php/contact.php">
    	<div>
    		<div class="row half">
    			<div class="6u">
    				<input type="text" name="nom" id="name" placeholder="Nom" />
    			</div>
    			<div class="6u">
    				<input type="text" name="email" id="email" placeholder="Email" />
    			</div>
    		</div>
    		<div class="row half">
    			<div class="12u">
    				<input type="text" name="sujet" id="subject" placeholder="Sujet" />
    			</div>
    		</div>
    		<div class="row half">
    			<div class="12u">
    				<textarea name="message" id="message" placeholder="Message"></textarea>
    			</div>
    		</div>
    		<div class="row">
    			<div class="12u">
    				<input type="hidden" name="envoi" />
    				<?php include 'php/contact.php' ?>
    				<?php echo $etat_message; ?>
    				<a href="#" onClick="document.getElementById("formulaire").submit();" class="button form-button-submit">Envoyer</a>
    				<a href="#" class="button button-alt form-button-reset">Tout effacer</a>
    			</div>
    		</div>
    	</div>
    </form>
    Et mon contact.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
    <?php
    /*
    ********************************************************************************************
    CONFIGURATION
    ********************************************************************************************
    */
    // destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
    $destinataire = 'damien.ardito@me.com';
     
    // copie ? (envoie une copie au visiteur)
    $copie = 'oui'; // 'oui' ou 'non'
     
    /*
    ********************************************************************************************
    FIN DE LA CONFIGURATION
    ********************************************************************************************
    */
     
    // on teste si le formulaire a été soumis
    if (!isset($_POST['envoi']))
    {
    	// formulaire non envoyé
    	$etat_message = "<p align=\"left\">Veuillez envoyer le formulaire.</p><br />";
    }
    else
    {
    	//cette fonction sert à nettoyer et enregistrer un texte
    	function Rec($text)
    	{
    		$text = htmlspecialchars(trim($text), ENT_QUOTES);
    		if (1 === get_magic_quotes_gpc())
    		{
    			$text = stripslashes($text);
    		}
    		$text = nl2br($text);
    		return $text;
    	};
    	//Cette fonction sert à vérifier la syntaxe d'un email
    	function IsEmail($email)
    	{
    		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
    		return (($value === 0) || ($value === false)) ? false : true;
    	}
    	// formulaire envoyé, on récupère tous les champs.
    	$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
    	$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
    	$sujet = (isset($_POST['sujet'])) ? Rec($_POST['sujet']) : '';
    	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
     
    	// On va vérifier les variables et l'email ...
    	$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
     
    	if (($nom != '') && ($email != '') && ($sujet != '') && ($message != ''))
    	{
    		// les 4 variables sont remplies, on génère puis envoie le mail
    		$headers = 'MIME-Version: 1.0' . "\r\n";
    		$headers .= 'From:'.$nom.' <'.$email.'>' . "\r\n" .
    		'Reply-To:'.$email. "\r\n" .
    		'X-Mailer:PHP/'.phpversion();
     
    		// envoyer une copie au visiteur ?
    		if ($copie == 'oui')
    		{
    			$cible = $destinataire.','.$email;
    		}
    		else
    		{
    			$cible = $destinataire;
    		};
     
    		// Remplacement de certains caractères spéciaux
    		$message = str_replace("'","'",$message);
    		$message = str_replace("’","'",$message);
    		$message = str_replace("&quot;",'"',$message);
    		$message = str_replace('<br>','',$message);
    		$message = str_replace('<br />','',$message);
    		$message = str_replace("&lt;","<",$message);
    		$message = str_replace("&gt;",">",$message);
    		$message = str_replace("&amp;","&",$message);
     
    		function date_getMicroTime() 
    		{
    			list($usec, $sec) = explode(' ', microtime());
    			return ((float) $usec + (float) $sec);
    		} 
     
    		$total = 0;
    		while($total < 1)
    		{
    			$start = date_getMicroTime();
    			for($i = 0 ; $i < 999999 ; $i++) 1;
    			{
    				mail($cible, $sujet, $message, $headers);
    				$total = round(date_getMicroTime() - $start, 3);
    			}
    		}
     
    		// Envoi du mail
    		if (mail($cible, $sujet, $message, $headers))
    		{
    			$etat_message = "Votre message a bien été envoyé !";
    		}
    			else
    		{
    			$etat_message = "Votre message n'a pas été envoyé. Veuillez réessayer s'il vous plait.";
    		};
    	}
    	else
    	{
    		// une des 3 variables (ou plus) est vide ...
    		$etat_message = "Veuillez remplir tous les champs.";
    	};
    };
    ?>
    Le script permet d'envoyer des mails vers ma boite. La variable $etat_message peut prendre plusieurs valeurs : "Votre message a bien été envoyé !", "Veuillez remplir tous les champs.", etc. Elle doit normalement s'afficher sous mon formulaire.

    J'ai cependant un problème. Lorsque j'ouvre ma page, j'ai d'emblée le message "Veuillez envoyer le formulaire." qui s'affiche sous mon formulaire. Le pire, c'est que lorsque je rempli et que j'envoie mon message, j'obtiens une page blanche dont l'URL est http://damien.ardito.free.fr/php/contact.php, et forcément aucun message ne s'affiche.

    Comment faire pour que cette page blanche ne soit pas ouverte et surtout que j'affiche un message sous mon formulaire ?

    Merci à vous.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Salut,

    si le formulaire n'a pas été posté, cette partie-ci est exécutée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (!isset($_POST['envoi']))
    {
    	// formulaire non envoyé
    	$etat_message = "<p align=\"left\">Veuillez envoyer le formulaire.</p><br />";
    }
    Et donc le msg s'affiche..

    Ensuite pour la page blanche, il faut changer la destination du formulaire vers index.php, et non vers contact.php (qui n'affiche rien, d'où la page blanche..).

  4. #4
    Membre à l'essai
    Homme Profil pro
    Sans emploi
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Bonsoir billoum,

    Bien vu pour ta première remarque.

    Pour la seconde, j'ai changé la destination du formulaire et ça marche mais pas encore comme je veux. C'est-à-dire que ma page index.php est rechargée et c'est le haut de ma page qui est affichée.

    Est-ce que c'est possible de faire en sorte que la page ne "bouge pas" ?

    Merci à toi !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Désolé mais je ne suis pas sûr de comprendre, tu voudrais que la page ne se recharge pas? Si oui il faudra le faire en javascript ou en AJAX

  6. #6
    Membre à l'essai
    Homme Profil pro
    Sans emploi
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Je voudrais que lorsque l'utilisateur envoie un message, il y ait une petite indication lui indiquant l'état de l'envoi (bien envoyé, pas envoyé, champs manquants).

    Actuellement, lorsque l'utilisateur clique sur Envoyer, mon index.php est rechargée, et du coup l'utilisateur doit redescendre dans la page jusqu'au formulaire pour voir l'indication. C'est pas "joli", je veux que ça soit fluide, instantané ! Donc, oui, j'aimerais que la page ne soit pas rechargée.

    Aurais-tu un code à me proposer ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    496
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 496
    Points : 585
    Points
    585
    Par défaut
    Essaie une recherche sur google genre "envoi de mail ajax", ya tout ce qu'il faut

  8. #8
    Membre à l'essai
    Homme Profil pro
    Sans emploi
    Inscrit en
    Avril 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Sans emploi

    Informations forums :
    Inscription : Avril 2014
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    Je reviens pour vous dire que je n'ai finalement pas retenu la solution avec l'AJAX. J'ai simplement opté pour une ancre, ça marche aussi bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. A propos de PHP 5xx
    Par azorol dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2013, 18h49
  2. aide a propos :Socket Php
    Par nabilwn dans le forum Langage
    Réponses: 1
    Dernier message: 31/08/2011, 14h48
  3. [eCommerce] Toujours à propos du tutoriel sur la création d'un panier en PHP
    Par patriciaprovence dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 03/09/2010, 20h12
  4. [Système] question a propos d'execution du code php
    Par free01 dans le forum Langage
    Réponses: 1
    Dernier message: 28/06/2006, 22h38

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