[Bêta 4] Include dans une static

Bonjour je m'explique.
J'ai donc mon folio qui est en construction et j'aimerais mettre un formulaire de contact dans une static.

http://www.satovo.net >> Mon folio
http://satovo.net/?static3/contact >> Page de contact

J'ai d'abord voulu mettre quelques formulaires tirés du script php de contact et ne voyant aucune erreur je décide donc de faire une include du script complet voir si ça marche et ça me donne une erreur...

Que faire pour intégrer un script qui se trouve à cette adresse:
http://www.satovo.net/contact/contact.php pour l'intégrer et le rendre totalement exploitable à partir de ma static ?

Merci d'avance!
Cordialement Satovo

Réponses

  • Bonsoir Satovo,

    Les pages statiques permettent d'inclure du code PHP, donc tu peux à priori copier coller le code de ton script contact ds le code source de la page statique
  • Oui mais si je le fais ça n'a pas l'air de marcher vu que en PHP si je ne me trompe pas il faut placer certaines parcelle de code avant le doctype.
    J'avais donc penser placer cette partie avant le doctype dans le fichier static.php mais ça l'alourdirais pour les autres pages et ce serait donc inutile.

    Voila le link pour télécharger le script
    http://www.comscripts.com/scripts/php.contact-captcha-v1.2364.html

    Est ce que tu pourrais m'expliquer la démarche à suivre, je bidouille un peu le PHP mais bon c'est moyen moyen ^^.
    Sinon merci pour le commentaire ça me fait plaisir.
  • SatovoSatovo Member
    novembre 2008 modifié
    <?
    session_start(); //ouverture la session pour conserver le captcha
    
    if (!isset($_POST["action"])) $_POST["action"]="";
    if (!isset($_POST["nom"])) $_POST["nom"]=""; //déclaration de chaque élément de formulaire
    if (!isset($_POST["prenom"])) $_POST["prenom"]="";
    if (!isset($_POST["email"])) $_POST["email"]="";
    if (!isset($_POST["sujet"])) $_POST["sujet"]="";
    if (!isset($_POST["message"])) $_POST["message"]="";
    if (!isset($_POST["captcha"])) $_POST["captcha"]="";
    $msg="";
    $flag=1;
    // CI-DESSOUS remplacez l'adresse ($destinataire="contact@votreadresse.com";) par la vôtre
    if ($_POST["action"]=="Envoyer" && $_POST["email"]!="" && strtolower($_POST["captcha"])==$_SESSION["phrase"]){
    	$destinataire="germain.souquet@gmail.com"; //mettez ici votre adresse e-mail 
    	$objet="Satovo.net - Formulaire de contact "; // titre du mail automatique
    	$message_envoi="Vous avez reçu une demande de contact ! \n";
    	$message_envoi.="Voici le contenu : \n"; //déclaration du contenu du message
    	$message_envoi.="Nom du contact :".$_POST["nom"]." \n";
    	$message_envoi.="Prénom du contact :".$_POST["prenom"]." \n";
    	$message_envoi.="E-mail du contact :".$_POST["email"]." \n";
    	$message_envoi.="Site web :".$_POST["url"]." \n";
    	$message_envoi.="Sujet :".$_POST["sujet"]." \n";
    	$message_envoi.="Message du contact :".$_POST["message"]." \n\n"; //rajouter apres cette ligne les autres éléments du formulaire
    	
    	mail($destinataire,$objet,$message_envoi); // envoi du message
    	
    	$flag=0; //si tout est OK, on passe cette variable à 1
    }
    else{
    	$msg="<span class='info'>Vous devez remplir tous les champs, portant un astérisque <span class='asterisque'>*</span>.</span> <span class='info-bis'>Merci</span>";
    }
    
    // début de la gestion de l'affichage du captcha
    $monfichier=fopen("http://www.satovo.net/contact/captcha.txt","r");
    $i=0;
    while(!feof($monfichier)){
    	$montab[$i]=fgets($monfichier,4096);
    	$i++;
    }
    fclose($monfichier);
    shuffle($montab);
    $elem0=explode(";",$montab[0]);
    $elem1=explode(";",$montab[1]);
    $elem2=explode(";",$montab[2]);
    $elem3=explode(";",$montab[3]);
    $elem4=explode(";",$montab[4]);
    $phrase=$elem0[0].$elem1[0].$elem2[0].$elem3[0].$elem4[0];
    $_SESSION["phrase"]=$phrase; 
    $img="<span class='img'><img src='http://www.satovo.net/contact/img_captcha/".$elem0[1]."' alt=''/><img src='http://www.satovo.net/contact/img_captcha/".$elem1[1]."' alt=''/><img src='http://www.satovo.net/contact/img_captcha/".$elem2[1]."' alt=''/><img src='http://www.satovo.net/contact/img_captcha/".$elem3[1]."' alt=''/><img src='img_captcha/".$elem4[1]."' alt=''/></span>";
    //fin de la gestion du captcha
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head>
    
    <title>Formulaire de contact</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" media="screen" type="text/css" title="Contact captcha" href="http://www.satovo.net/contact/contact-captcha.css" />
    
    </head>
    
    <body>
    
    <? 
    if($flag==0){
     // quand le message est parti voici ce qui est affiche, avec un lien retour vers la page de votre choix
     //libre à vous de procéder aux modifications que vous souhaitez
     echo "Merci pour votre message, nous vous répondrons dans les meilleurs délais<br />";
     echo '<a href="javascript:history.back()">Retour</a>';
    }
    else {
    ?>
    
    <!-- A partir d'ici il s'agit du traitement du formulaire (ce qui est apparent)-->
    <div id="formu">
    <form method="post" name="contact" action="http://satovo.net/?static3/contact">
    <fieldset>
    	<h3>Formulaire de Contact</h3>
    	<p><? echo $msg ?></p>
    	<p><label>Nom <span class='asterisque'>*</span> : </label><input type="text" name="nom" value="<?php echo $_POST["nom"] ?>" /></p>
    	<p><label>Prénom <span class='asterisque'>*</span> : </label><input type="text" name="prenom" value="<?php echo $_POST["prenom"] ?>" /></p>
    	<p><label>E-mail <span class='asterisque'>*</span> : </label><input type="text" name="email" value="<?php echo $_POST["email"] ?>"/></p>
    	<p><label>Site web : </label><input type="text" name="url" value="<?php echo $_POST["url"] ?>"/></p>
    	<p><label>Sujet <span class='asterisque'>*</span> : </label><input type="text" name="sujet" value="<?php echo $_POST["sujet"] ?>" /></p>
    	<!-- vous pouvez rajouter des éléments de formulaires ici -->
    	<p><label>Message <span class='asterisque'>*</span> : <br /><br /></label><textarea name="message" cols="40" rows="8"><?php echo $_POST["message"] ?></textarea></p>
    	<p class="captcha"><? echo $img ?> Recopiez le texte de l'image : <input type="text" name="captcha" size="5"/></p>
    </fieldset>
    <br /><input type="submit" name="action" value="Envoyer" />  <input type="reset" name="reset" value="Réinitialiser" class="button" />
    </form></div>
    <!-- Ici c'est la fin du traitement du formulaire-->
    
    <? } ?>
    
    </body>
    
    </html>
    
    Voila j'ai mit ce code il a l'air de fonctionner (pas d'erreur) mais me demande de remplir tous les champs et n'envoie pas d'email... Shit!


    Est ce que ce serait possible d'utiliser un second fichier, je m'explique la static contient juste du HTML et la action renvoie vers une page par exemple contact.php qui execute l'envoie de mail et qui propose un lien de retour vers le site.
    Ce serait possible d'adapter ce code la pour faire ce je propose pour que tout marche ?

    Enfin si c'est la bonne solution bien sur ;)
  • Salut,

    Comme indiqué dans l'aide sur les pages statiques (zone administration), vous pouvez mettre du code PHP même si celui ci doit être interprété avant les entêtes (redirections,cookies,sessions).
  • Satovo a écrit:
    Voila j'ai mit ce code il a l'air de fonctionner (pas d'erreur) mais me demande de remplir tous les champs et n'envoie pas d'email... Shit!
    Il me semble qu'il ya un petit pb au niveau du test du capcha...
    Je pense publier rapidement un formulaire de contact pour une page statique.
  • SatovoSatovo Member
    novembre 2008 modifié
    Ok ok, je vais essayer de supprimer le code captcha et le modifier en mettant celui de pluxml.
    Je vous tiens au courant!
    Merci marama pour votre (ton ?) support rapide & efficace.

    EDIT: Problème résolu, script de contact opérationnel ! Le problème venait bien du captcha
  • marama a écrit:
    Je pense publier rapidement un formulaire de contact pour une page statique.
    Coool !! C'est vraiment le seul truc qui me faisait défaut ! :)


    à plus,

    Gzyg
  • Gzyg a écrit:
    marama a écrit:
    Je pense publier rapidement un formulaire de contact pour une page statique.
    Coool !! C'est vraiment le seul truc qui me faisait défaut ! :)


    à plus,

    Gzyg
    Voilà : http://download.pluxml.org/plugins/pages-statiques/contact.txt
    En test ici : http://blog.flox-arts.net/?static1/page-de-contact
    Un petit tuto : http://wiki.pluxml.org/?11-installer-un-formulaire-de-contact
  • bricabrica Member
    novembre 2008 modifié
    Je lis dans le code source :
    # Renseignez ici votre adresse mail
    $email = 'pluxml@mondomaine.com';
    
    Ne pourrait-on pas récupérer l'adresse courrielle de l'administrateur qui est stockée dans le fichier de configuration XML ?

    De même, en solution alternative au capcha, comment proposer le service openID ?
  • brica a écrit:
    Ne pourrait-on pas récupérer l'adresse courrielle de l'administrateur qui est stockée dans le fichier de configuration XML ?
    Sous Pluxml cette fonctionnalité n'est pas disponible
  • bricabrica Member
    novembre 2008 modifié
    Le script fonctionne nickel : bravo. Petit réglage à faire ? les apostrophes saisies dans le formulaire sont traduites par l'entité HTML & #039;
    et apparaissent ainsi dans le courriel reçu par Thunderbird 2.x sous MacOS.
  • brica a écrit:
    les apostrophes saisies dans le formulaire sont traduites par l'entité HTML & #039;
    Voilà c'est corrigée, c'est mon côté parano...
  • Un stripslashes placé au bon endroit ne serait-il pas plus opportun ? (Je suis une bille en PHP)
  • brica a écrit:
    (Je suis une bille en PHP)
    :)
  • Si on se moque encore une fois de moi, je me pends à la prise ADSL avec un fil de discussion.
  • marama" a écrit:
    Waouh, quelle rapidité !
    Merci beaucoup ! ;)

    à plus,

    Gzyg
  • Super, j'avais fini par comprendre et rajouté la ligne :
    $corps = str_replace("'", "'", $corps);
    Pas joli, mais ça marchait... Merci beaucoup.
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour,

    Concernant le formulaire de contact...

    Afin d'éviter toute faille de sécurité merci d'inclure au début de chacune de vos pages statiques le code suivant:
    <?php
    if (!defined('PLX_ROOT'))
        exit;
    ?>
    
    Cordialement,
    Stéphane

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • C'et noté, merci ! ;)


    à plus,

    Gzyg
  • Je vais utiliser le système de commentaire fait par marama car le mien a quelque problème xD.

    Merci beaucoup!
Connectez-vous ou Inscrivez-vous pour répondre.