> Tous les forums > Forum des Webmasters
 appeler 1 partie de mail dans 1 page
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
ogd
  Posté le 21/11/2006 @ 17:37 
Aller en bas de la page 
Astucien

Bonjour,

Je m'explique:

J'utilise un formulaire php que les gens remplissent pour envoyer un message sur ma messagerie mail...

Je voudrais savoir s'il est possible de récupérer une partie des données entrées dans ce formulaire (en l'occurence la partie "message") et de la renvoyer dans une page php classique (pour faire défiler les messages un peu comme les S.M.S à la tv)...

Il faudrait aussi que je puisse intervenir avant la mise en ligne de ces messages pour valider l'a diffusion de ce message ou l'interdire...

Enfin, que je puisse décider de l'heure de diffusion de l'ensemble des messages (le soir uniquement)...

Si vous avez compris ce que je recherche et si vous avez déjà vu un script de ce style ou comment le mettre en place, je vous remercie de m'aider

Bonne fin de journée,

Ogd

Publicité
midnightblue
 Posté le 21/11/2006 à 18:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

formulaire.php

<?
if(empty($_POST["ok"])) {$_POST["ok"]="";} $ok=$_POST["ok"];
if(empty($_POST["destinataire"])) {$_POST["destinataire"]="";} $destinataire=$_POST["destinataire"];
if(empty($_POST["sujet"])) {$_POST["sujet"]="";} $sujet=htmlSpecialChars($_POST["sujet"]);
if(empty($_POST["message"])) {$_POST["message"]="";} $message=htmlSpecialChars($_POST["message"]);
if($ok!="") {
mail($destinataire,$sujet,$message);
header("location:page.php?message=".$message."");
}
else {
echo "<form method=\"post\">";
echo "<input type=\"hidden\" name=\"destinataire\" value=\"machin@hotmail.com\" />";
echo "Sujet><input type=\"text\" name=\"sujet\" size=\"24\" value=\"\" maxlength=\"256\" /><br />";
echo "<textarea name=\"message\" cols=\"30\" rows=\"8\" maxlength=\"1600\" /></textarea><br />";
echo "<input type=\"submit\" name=\"ok\" value=\"ENVOYER\" />";
echo "</form>";
}
?>

a+

*µ*



Modifié par midnightblue le 21/11/2006 18:58
midnightblue
 Posté le 21/11/2006 à 19:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

...et dans page.php (page où s'affiche le message)

<?

if(empty($_GET["message"])) { $_GET["message"]="";}
$message=$_GET["message"];
echo $message;
?>

Quelle galère pour mettre en ligne du code !

///



Modifié par midnightblue le 21/11/2006 19:02
ogd
 Posté le 22/11/2006 à 09:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Hello!

Comment je peux l'intégrer à mon code?

// --- Array of Form Elements ---
$form_mail[] = array( "name" => "Prénom_(ou_pseudo)", "text" => "Prénom (ou pseudo)", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Age", "text" => "Age", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Ville", "text" => "Ville", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Adresse_E-mail", "text" => "Adresse E-mail", "type" => "e-mail", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Destinataire", "text" => "Destinataire", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Age_du_destinataire", "text" => "Age du destinataire", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Ville_du_destinataire", "text" => "Ville du destinataire", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Votre_tube_préféré_en_ce_moment", "text" => "Votre tube préféré en ce moment", "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Votre_message", "text" => "Votre message", "type" => "text", "required" => "Required" ) ;

// -- Detech Submit & SendMail --
$isHideForm = false;
if( $HTTP_POST_VARS["formmail_submit"] ){
$sErr = checkPass();
if( ! $sErr ){
sendFormMail( $form_mail, "") ;
$isHideForm = true;

$redirect = "";
if( strlen(trim($redirect)) ):
header( "Location:$redirect" );
exit;
endif;
}
}


?>
// ===============================================
function sendFormMail( $form_mail, $sFileName = "" )
{
global $HTTP_POST_VARS ;

$to = $HTTP_POST_VARS["esh_formmail_recipient"]; // I don't detect spam at this moment. it's to do list.
$from = "online.submit@" . HOST_NAME ;
$subject = $HTTP_POST_VARS["esh_formmail_subject"];

// first stage keep it simple:
$sWhatToDo = $sFileName ? "mailandfile" : "" ; //$HTTP_POST_VARS["esh_formmail_mail_and_file"];

//$sFileName = $HTTP_POST_VARS["esh_formmail_save_record_file"];
$cc = $HTTP_POST_VARS["esh_formmail_cc"];
$bcc = $HTTP_POST_VARS["esh_formmail_bcc"];
$charset = $HTTP_POST_VARS["esh_formmail_charset"];

for( $i = 0; $i $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
$content .= $form_mail[ $i ][ "text" ] . " \t : " . $value ."\n";
$line .= remove_newline( $value ) . "\t" ;
if( strtolower("E-mail") == strtolower($form_mail[ $i ][ "type" ]) ) {
//print "Type:[" . $form_mail[ $i ][ "type" ] . "] $value \n";
$from = $value ;
}
};
$content .= "\n\nIP:" . getEnv( "REMOTE_ADDR" );

switch( strtolower($sWhatToDo) ){
case "mailandfile" :
mailAttachments( $to , $subject , $content, $from, $charset, $cc , $bcc ) ;
if( ! appendToFile( $sFileName, $line ) )
mailReport( $content . "\n\nFaille de l'écriture du Form Mail dans le dossier." );
break;

case "fileonly" :
if( ! appendToFile( $sFileName, $line ) )
mailReport( $content . "\n\nFaille de l'écriture du Form Mail dans le dossier.", $from );
break;

default :
mailAttachments( $to , $subject , $content, $from, $charset, $cc , $bcc ) ;
}

mailAutoResponse( $from ) ;
}


//------------------------------------------------------------------------------------------
function mailAutoResponse( $to ){
global $HTTP_POST_VARS ;
$subject = $HTTP_POST_VARS["esh_formmail_return_subject"];
$responseMsg = $HTTP_POST_VARS["esh_formmail_return_msg"];
if( $to && $responseMsg )
mail( $to, $subject, $responseMsg, "From: " . $HTTP_POST_VARS["esh_formmail_recipient"] );
}


//------------------------------------------------------------------------------------------
function mailReport( $content = "", $from = "" ){
mail( ADMIN_MAIL, "Error@" . HOST_NAME . PHP_SELF, $content, "From:$from" );
}

//------------------------------------------------------------------------------------------
function remove_newline( $str = "" ){
$newliner = "" ; // replace \r\n with $newliner ;
$newtaber = "" ; // replace \t with $newtaber ;
$str = ereg_replace( "\t", $newtaber, $str );
$str = ereg_replace( "\r\n", $newliner, $str );
return ereg_replace( "\n", $newliner, $str );
}

//------------------------------------------------------------------------------------------
function checkPass()
{
global $form_mail ;
global $HTTP_POST_VARS ;
global $HTTP_POST_FILES ;

for( $i = 0; $i $type = strtolower( $form_mail[ $i ][ "type" ] );
$value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
$required = $form_mail[ $i ][ "required" ] ;
$text = stripslashes( $form_mail[ $i ][ "text" ] );

// simple check the field has something keyed in.
if( !strlen($value) && ( $required == "Required" ) && $type != "attachment" )
return ERR_MISSING . $text ;

// verify the special case
if(
( strlen($value) || $type == "attachment" )
&& $required == "Required"
):
switch( $type ){
case strtolower("Sender's Name") :
break;
case strtolower("E-mail generique"):
case strtolower("E-mail"):
if( ! formIsEMail($value) ) return ERR_EMAIL . $text ;
break;
case "text" :
break;
case "textarea" :
break;
case "checkbox" :
case "radio" :
break;
case "selection" :
break;
case "attachment" :
$upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;
if( ! is_uploaded_file($upload_file) )
return ERR_SELECT_UPLOAD . $text;
break;
case strtolower("Date(MM-DD-YYYY)"):
break;
case strtolower("Date(MM-YYYY)"):
break;
case strtolower("CreditCard(MM-YYYY)"):
if( $value break;
case strtolower("CreditCard#"):
if( !formIsCreditNumber( $value ) ) return ERR_CREDIT_CARD_NUMBER . $text ;
break;
case strtolower("Time(HH:MM:SS)"):
break;
case strtolower("Time(HH:MM)"):
break;
default :
//return $sErrRequired . $form_mail[ $i ][ "text" ];
} // switch
endif;
} // for

return "" ;
}

//------------------------------------------------------------------------------------------
function formSelected( $var, $val )
{
echo ( $var == $val ) ? "selected" : "";
}


//------------------------------------------------------------------------------------------
function formChecked( $var, $val )
{
echo ( $var == $val ) ? "checked" : "";
}


//------------------------------------------------------------------------------------------
function formIsEMail( $email ){
return ereg( "^(.+)@(.+)\\.(.+)$", $email );
}


//------------------------------------------------------------------------------------------
function selectList( $name, $selectedValue, $start, $end, $prompt = "-Select-", $style = "" )
{
$tab = "\t" ;
print "\n" ;
print $tab . "$prompt\n" ;
$nLen = strlen( "$end" ) ;
$prefix_zero = str_repeat( "0", $nLen );
for( $i = $start; $i $stri = substr( $prefix_zero . $i, strlen($prefix_zero . $i)-$nLen, $nLen );
$selected = ( $stri == $selectedValue ) ? " selected " : "" ;
print $tab . "$stri\n" ;
}
print "\n\n" ;
}

Merci

Ogd



Modifié par ogd le 22/11/2006 09:37
midnightblue
 Posté le 22/11/2006 à 18:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Elementaire mon cher Watson :-)

On va enregistrer tes messages dans un fichier CSV nommé enregistrements.txt. Pour ce faire on va rajouter trois lignes à la fin de la fonction sendFormMail( $form_mail, $sFileName = "" ) :

<?
function sendFormMail( $form_mail, $sFileName = "" ) {
......................................
......................................
$fp=fopen("enregistrements.txt","a+");
fwrite($fp,$subject."\t".$content."\n");
fclose($fp);
}
?>

Ensuite dans la page d'affichage on va créer deux fonctions. Une pour afficher les messages (sujet et contenu) et l'autre pour rafraichir les données.

<?
function lecture() { // lecture -> du plus récent au plus ancien
$n=10; // nombre d'enregistrements à afficher
$fichier="enregistrements.txt";
$enregistrements=file($fichier);
$enregistrements=array_reverse($enregistrements);
for($i=0;$i<count($enregistrements);$i++){
$enregistrements[$i]=explode("\t",$enregistrements[$i]);
echo "<strong>".$enregistrements[$i][0]."</strong>";// affichage du titre
echo "<br />";
echo $enregistrements[$i][1];//affichage du texte
if($i==$n-1) {break;}
}
}

function rafraichissement() {
$n=10; // nombre d'enregistrements à afficher
$fichier="enregistrements.txt";
$enregistrements=file($fichier);
if(count($enregistrements)==$n*2){
$m=count($enregistrements)-$n;
$fp=fopen("enregistrements.txt","w+");
for($i=$m;$i<count($enregistrements);$i++){
fwrite($fp,$enregistrements[$i]); // reécriture du fichier
}
fclose($fp);
}
}
?>

Remarque 1: le principe est de rafraichir la base de donnée chaque fois que le nombre d'enregistrements atteint le double du nombre de messages à afficher. Mais si on désire conserver tous les enregistrements, commenter ci-dessous la ligne d'appel de la fonction. Faire le au besoin le rafraichissement manuellement quand le fichier devient lourd.
Remarque 2: Veiller à ce que la valeur $n soit la même dans les deux fonctions.

Enfin on va appeller les fonctions dans l'intervalle horaire souhaité et à l'emplacement ad hoc dans la page.

<?
if( date("G")>"20" && date("G")<"24" ) { // = de 20h à minuit
lecture();
rafraichissement();
}
?>

Variante

On peut aussi enregistrer les deux fonctions dans un fichier lecture.php qu'on appelle par include dans la page d'affichage.

<?
if( date("G")>"20" && date("G")<"24" ) { // = de 20h à minuit
include("lecture.php");
lecture();
rafraichissement();
}
?>

A+

*µ*


Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
125,46 €SSD WD Black SN750 1 To (NMVe M.2, 3470 Mo/s) à 125,46 € livré
Valable jusqu'au 05 Mars

Amazon Allemagne fait une promotion sur le SSD WD Black SN750 1 To (NMVe M.2) qui passe à 120,91 €. Comptez 4,55 € pour la livraison en France soit un total de 125,46 € livré alors qu'on le trouve ailleurs à partir de 170 €. Ce SSD utilise une interface M.2 NVMe PCIe Gen3 x 4 pour une connexion simple et des performances exceptionnelles : jusqu’à 3 470 Mo/s en lecture séquentielle et jusqu’à 3 000 Mo/s en écriture séquentielle. Le SSD est doté de la technologie 3D TLC NAND haute densité offrant une endurance d’écriture durable et assorti d’une garantie de cinq ans.

Vous pouvez utiliser votre compte Amazon FR sur Amazon DE et il n'y a pas de douane.


> Voir l'offre
54,99 €Disque dur Western Digital Blue 2 To à 54,99 €
Valable jusqu'au 06 Mars

Amazon propose actuellement le disque dur Western Digital Cavier Blue 2 To à 54,99 € livré gratuitement. Ce disque dur 3.5 pouces SATA III  tourne à 5400 tr/min. On le trouve ailleurs à partir de 61 €. 


> Voir l'offre
21,09 €Clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C à 21,09 €
Valable jusqu'au 05 Mars

Amazon fait une promotion sur la clé USB Sandisk Ultra 128 Go à double connectique USB 3.1 Type A et C qui passe à 21,09 €. Cette clé USB  dispose d'un connecteur réversible USB Type C et d'un connecteur classique de type A. Grâce à elle, transférez en toute simplicité et rapidement (jusqu'à 150 Mo/s) vos fichiers entre vos smartphones, tablettes et ordinateurs. On la trouve ailleurs à plus de 40 €.


> Voir l'offre

Sujets relatifs
editeur TinyMCE grande largeur texte dans page
Bouton RSS automatique dans page annonce Google site
insérer programme python dans page web
Adresse e-mail fantôme dans GMail ?
Insertion image dans page Web directement sans URL ?
probleme accès page administrator dans cms Joomla
inserer un fichier audio dans une page web
Envoi checkbox par mail dans formulaire php
Insérer un formulaire dans page " Contact"
Des >>>>> qui apparaissent dans ma page
Plus de sujets relatifs à appeler 1 partie de mail dans 1 page
 > Tous les forums > Forum Forum des Webmasters