> 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
7,99 €Lot de 32 piles Philips AA à 7,99 €
Valable jusqu'au 20 Janvier

Fnac fait une promotion sur le lot de 32 piles Philips AA qui passe à 7,99 € au lieu de 15 €.


> Voir l'offre
109,99 €Disque dur Seagate NAS Iron Wolf 4 To à 109,99 €
Valable jusqu'au 20 Janvier

Cdiscount propose le disque dur Seagate IronWolf 4 To à 109,99 €. Ce disque dur 3.5 pouces SATA III est adapté aux NAS et ordinateurs qui fonctionnent 24h/24. On le trouve ailleurs autour de 130 €. 


> Voir l'offre
9,99 €Adaptateur Bluetooth USB TP-Link UB400 à 9,99 €
Valable jusqu'au 20 Janvier

Amazon fait une promotion sur l'adaptateur Bluetooth USB TP-Link UB400 qui passe à 9,99 €. Cet adaptateur à brancher sur un port USB va vous permettre d'ajouter le bluetooth à votre ordinateur et d'utiliser ensuite sans fil vos périphériques bluetooth : souris, clavier, casque, manette, téléphone, ...


> 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