
| | Il faut créer un répertoire "tmpimg"
- Upload de tous les fichiers
- Contrôle les extensions.
- Construction de l'entête pour le mail.
- Envoi du mail
- Suppresion des fichiers.
<? $nbFile = 3; ?>
<html>
<body>
<form action="mail.php" method="POST" enctype="multipart/form-data" name="formulaire">
<br><br>
<table style="border:1px solid #000000" align="center">
<tr>
<td colspan="2" class="en-tete">Envoyer vos informations concernant le produit</td>
</tr>
<tr>
<td colspan="2">
<textarea name="message"></textarea>
</td>
</tr>
<? for($i=0;$i<$nbFile;$i++){ ?>
<tr>
<td>Fichier image <? echo $i+1; ?> :</td>
<td><input type="file" name="fichier<? echo $i; ?>" value="">
</tr>
<? } ?>
<tr>
<td align="center" colspan="2"><input type="submit" name="action" value="Envoyer"></td>
</tr>
</table>
<input type="hidden" name="nbfile" value="<? echo $nbFile; ?>">
</form>
</body>
</html>
function get_extension($filename){
$parts = explode('.',$filename);
$last = count($parts) - 1;
$ext = $parts[$last];
return $ext;
}
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$isConform = false;
$attachment = array();
$arrNameFile = array();
$arrSource = array();
$arrExtension = array();
$arrType = array();
$arrInfoManu = array();
$arrExtensionCTRL = array('jpg','jpeg','bmp','psd','png','gif','tif','tiff');
$boundary = "-----=".md5(uniqid(rand()));
$extensionTemp = '';
$file = '';
$attachment = '';
$destinataire = 'mail destinataire';
$from = 'votre mail';
$reponse = 'votre mail réponse';
$sujet = 'Votre sujet';
$repertoire = 'tmpimg';
$fp = null;
$type = 'text/plain';
$message = trim($_POST['message']);
if($_POST['action'] == 'Envoyer'){
for($i=0;$i<$_POST['nbfile'];$i++){
$extensionTemp = get_extension($_FILES['fichier'.$i]['name']);
if($_FILES['fichier'.$i]['name'] != ''){
if(in_array(strtolower($extensionTemp), $arrExtensionCTRL)){
$arrNameFile[$i] = $_FILES['fichier'.$i]['name'];
$arrSource[$i] = $_FILES['fichier'.$i]['tmp_name'];
$isConform = true;
}else{
$isConform = false;
}
}
}
}
if($isConform == false){
header('Location:page_erreur.php?erreur=true');
exit();
}
for($i=0;$i<count($arrNameFile);$i++){
copy($arrSource[$i], $repertoire.'/'.$arrNameFile[$i]);
$arrExtension[$i] = strtolower(get_extension($arrNameFile[$i]));
if($arrExtension[$i] == 'gif') $arrType[$i] = 'image/gif';
else if($arrExtension[$i] == 'bmp') $arrType[$i] = 'image/bmp';
else if($arrExtension[$i] == 'png') $arrType[$i] = 'image/png';
else if($arrExtension[$i] == 'psd') $arrType[$i] = 'image/psd';
else if($arrExtension[$i] == 'jpg' || $arrExtension[$i] == 'jpeg') $arrType[$i] = 'image/jpeg';
else if($arrExtension[$i] == 'tif' || $arrExtension[$i] == 'tiff') $arrType[$i] = 'image/tiff';
}
$header = "MIME-Version: 1.0\r\n";
$header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
$header .= "\r\n";
$msg = "Je vous informe que ceci est un message au format MIME 1.0.\r\n";
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
$msg .= "Content-Transfer-Encoding:8bit\r\n";
$msg .= "\r\n";
$msg .="===================VOTRE MESSAGE===================\r\n\r\n";
$msg .= $message;
$msg .= "\r\n";
for($i=0;$i<count($arrNameFile);$i++){
$file = $repertoire.'/'.$arrNameFile[$i];
$fp = fopen($file, 'rb');
$attachment = fread($fp, filesize($file));
fclose($fp);
$attachment = chunk_split(base64_encode($attachment));
$msg .= "--$boundary\r\n";
$msg .= "Content-Type: ".$arrType[$i]."; \r";
$msg .= "name=\"".$arrNameFile[$i]."\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "Content-Disposition: inline;\r\n filename=\"".$arrNameFile[$i]."\"\r\n";
$msg .= $attachment . "\r\n";
$msg .= "\r\n";
$msg .= "\r\n\r\n";
unlink($file);
}
$msg .= "--$boundary--\r\n";
if(mail($destinataire, $sujet , $msg,"Reply-to: $reponse\r\nFrom: $from\r\n".$header)){
echo "OK";
}else{
echo "ERREUR";
}
}
?> |
|
Auteur : genova
| Version : 16/01/2006 | | |
| | $globals = array('GET', 'POST', 'COOKIE');
if( ! get_magic_quotes_gpc() )
{
for ( $i = 0; $i < 3; $i++ )
{
while ( list($cle, $valeur) = each(${'HTTP_' . $globals[$i] . '_VARS'}) )
{
unset($$cle);
if ( is_array($valeur) )
{
while ( list($cle_bis, $valeur_bis) = each($valeur) )
{
${'HTTP_' . $globals[$i] . '_VARS'}[$cle][$cle_bis] = addslashes($valeur_bis);
}
}
else
{
${'HTTP_' . $globals[$i] . '_VARS'}[$cle] = addslashes($valeur);
}
}
}
} |
|
Auteur : Moloc'h
| Version : 16/01/2006 | | |
| | <?
function listbox ( $name , $array_value = array() , $array_selected , $multiple = 0 , $size = 1 )
{
$select = '<select' . ( ( $multiple == 1 ) ? ' multiple name="' . $name . '[]"' : ' name="' . $name . '"' ) .
' size="' . $size . '">' . "n" ;
foreach ( $array_value as $key => $value )
{
$select .= '<option value="' . $key . '"' .
( ( $multiple == 1 ) ? ( in_array ( $key , $array_selected ) ? ' selected="selected"' : '' ) :
( $key == $array_selected ? ' selected="selected"' : '' ) ) .
'>' . $value . '</option>' . "n" ;
}
$select .= '</select>' ;
return $select ;
}
?> |
- $name : Le nom du l'élément select.
- $array_value : Le tableau des valeurs de l'élément select.
- $array_selected : Le tableau des valeurs sélectionnées.
- $multiple : Valeur bolléenne indiquant si l'élément select est multiple ou simple.
- $size : Taille du menu.
Mise en oeuvre :
Prenons l'exemple d'un menu déroulant des régions françaises :
Cas où les valeurs sont issues d'un tableau PHP : | <?
$region = array (
1 => 'Alsace' ,
2 => 'Aquitaine' ,
3 => 'Auvergne' ,
4 => 'Basse-Normandie' ,
5 => 'Bourgogne' ,
6 => 'Bretagne' ,
7 => 'Centre' ,
8 => 'Champagne-Ardenne' ,
9 => 'Corse' ,
10 => 'Dom-Tom' ,
11 => 'Franche-Comté' ,
12 => 'Haute-Normandie' ,
13 => 'Ile de France' ,
14 => 'Languedoc-Roussillon' ,
15 => 'Limousin' ,
16 => 'Lorraine' ,
17 => 'Midi-Pyrénées' ,
18 => 'Nord-Pas-de-Calais' ,
19 => 'Pays de la Loire' ,
20 => 'Picardie' ,
21 => 'Poitou-Charentes' ,
22 => 'PACA' ,
23 => 'Rhône-Alpes'
) ;
?> |
Dans la page HTML il suffit de faire :
Pour une liste simple | <?
echo listbox ( 'region' , $region ) ;
?> |
Pour une liste simple avec une valeur pré-sélectionnée | <?
echo listbox ( 'region' , $region , 4 ) ;
?> |
Pour une liste simple avec une valeur pré-sélectionnée et conservation d'une valeur après envoit | <?
echo listbox ( 'region' , $region , ( isset ( $_POST['region'] ) ? $_POST['region'] : 4 ) ) ;
?> |
Pour une liste multiple | <?
echo listbox ( 'region' , $region , array() , 1 , 6 ) ;
?> |
Pour une liste multiple avec des valeurs pré-sélectionnées | <?
echo listbox ( 'region' , $region , array ( 4 , 5 , 6 , 7 ) , 1 , 6 ) ;
?> |
Pour une liste multiple avec des valeurs pré-sélectionnées et conservation des valeurs après envoit | <?
echo listbox ( 'region' , $region ,
( isset ( $_POST['region'] ) ? $_POST['region'] : array ( 4 , 5 , 6 , 7 ) ) , 1 , 6 ) ;
?> |
Cas où les valeurs sont issues de la base : | CREATE TABLE region (
id TINYINT( 4 ) NOT NULL AUTO_INCREMENT ,
name TEXT,
PRIMARY KEY ( id )
);
INSERT INTO region (name) VALUES ( 'Alsace' );
INSERT INTO region (name) VALUES ( 'Aquitaine' );
INSERT INTO region (name) VALUES ( 'Auvergne' );
INSERT INTO region (name) VALUES ( 'Basse-Normandie' );
INSERT INTO region (name) VALUES ( 'Bourgogne' );
INSERT INTO region (name) VALUES ( 'Bretagne' );
INSERT INTO region (name) VALUES ( 'Centre' );
INSERT INTO region (name) VALUES ( 'Champagne-Ardenne' );
INSERT INTO region (name) VALUES ( 'Corse' );
INSERT INTO region (name) VALUES ( 'Dom-Tom' );
INSERT INTO region (name) VALUES ( 'Franche-Comté' );
INSERT INTO region (name) VALUES ( 'Haute-Normandie' );
INSERT INTO region (name) VALUES ( 'Ile de France' );
INSERT INTO region (name) VALUES ( 'Languedoc-Roussillon' );
INSERT INTO region (name) VALUES ( 'Limousin' );
INSERT INTO region (name) VALUES ( 'Lorraine' );
INSERT INTO region (name) VALUES ( 'Midi-Pyrénées' );
INSERT INTO region (name) VALUES ( 'Nord-Pas-de-Calais' );
INSERT INTO region (name) VALUES ( 'Pays de la Loire' );
INSERT INTO region (name) VALUES ( 'Picardie' );
INSERT INTO region (name) VALUES ( 'Poitou-Charentes' );
INSERT INTO region (name) VALUES ( 'PACA' );
INSERT INTO region (name) VALUES ( 'Rhône-Alpes' ); |
Puis :
<?
$sql = "SELECT name FROM region" ;
$result = mysql_query ( $sql ) ;
$region = array() ;
while ( $row = mysql_fetch_assoc ( $result ) )
{
$region[] = $row['name'] ;
}
?> |
Ensuite, c'est pareil ...
|
| |
Il faut juste rajouter la connection à la base.
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language=javascript>
function modifcombo(){
document.location.replace("essai3.php?lieux=" + document.form1.selectlieu.value );
document.form1.selectlieu.value = $lieux;
}
</script>;
</head>
<body>
<?php
if (isset($_GET['lieux'])){
$lieux = $_GET['lieux'];
} else {
$lieux = NULL;
}
print ">>>>" . $lieux ."<<< <br> <br> <br>";
?>
<p>Essai formulaire</p>
<form name="form1" method="post" action="">
<table width="100%" border="1">
<tr>
<td><div align="right">lieu :</div></td>
<td><select name="selectlieu" class="txt16-000000" onChange="javascript : modifcombo()">
<option value=""></option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?php
// Connexion à la base
include("../connectbase.inc") ;
// Execution requête
$ma_req = "SELECT * FROM lieu;";
$res_req = mysql_query($ma_req)
or die("Selection table \"lieu\" impossible");
// Affectation des variables utilisées pour l'affichage
if (mysql_num_rows($res_req)!=0) {
while ($une_ligne = mysql_fetch_array($res_req)) {
$id_lieu = $une_ligne["id_lieu"];
$nom_lieu = $une_ligne["nom_lieu"];
print "<option value=" . $id_lieu;
if ($id_lieu == $lieux) {
print " selected";
}
print ">" . $nom_lieu ."</option>";
}
}
?>
</select>
</td>
</tr>
<tr>
<td> <div align="right">salle : </div></td>
<td><select name="selectsalle" class="txt16-000000">
<option value=""></option>
<!-- Valeur vide pour forcer l'utilisateur à sélectionner -->
<?php
// Connexion à la base
include("../connectbase.inc") ;
// Execution requête
$ma_req = "SELECT * FROM salle WHERE id_lieu = '$lieux';";
$res_req = mysql_query($ma_req)
or die("Selection table \"salle\" impossible");
// Affectation des variables utilisées pour l'affichage
if (mysql_num_rows($res_req)!=0) {
while ($une_ligne = mysql_fetch_array($res_req)) {
$id_salle = $une_ligne["id_salle"];
$nom_salle = $une_ligne["nom_salle"];
print "<option value=" . "id_salle . ">" . "nom_salle . "</option>";
}
}
?>
</select></td>
</tr>
</table>
</form>
</body>
</html> |
|
Auteur : Sub0
| Version : 16/01/2006 | | |
| | <?php
$liste=Array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
$cnt=count($liste);
$select=@$_POST['select'];
$ret='';
if(isset($_POST['valider'])){
for($x=0;$x<$cnt;$x++)
if(isset($select[$x]))
$ret.=$liste[$x].'<br/>';
}
$ret.='<br/><form method="post">';
for($x=0;$x<$cnt;$x++){
$ret.='<input type="checkbox" name="select['.$x.']"';
if(isset($select[$x])) $ret.=' checked';
$ret.='/>'.$liste[$x].'<br/>';
}
$ret.='<br/>'.
'<input type="submit" name="valider" value=" ENVOYER "/>'.
'</form>';
echo $ret;
?> |
|
Auteur : iubito
| Version : 11/01/2006 | | |
| |
Les variables utilisées :
$UPLOAD_maxFileSize = 500;
$UPLOAD_nbFiles = 1;
$UPLOAD_forbiddenFiles = 'php|php3|php4...';
$UPLOAD_acceptedFiles = '';
|
Le formulaire :
$cfgUlMaxFileSize = strtoupper(ini_get("upload_max_filesize"));
if (substr_count($cfgUlMaxFileSize, 'K'))
$cfgUlMaxFileSize = str_replace('K', '', $cfgUlMaxFileSize) * 1024;
elseif (substr_count($cfgUlMaxFileSize, 'M'))
$cfgUlMaxFileSize = str_replace('M', '', $cfgUlMaxFileSize) * 1024 * 1024;
$uploadSize = min($cfgUlMaxFileSize, $UPLOAD_maxFileSize*1024);
echo '<form name="upload" enctype="multipart/form-data" action="upload.php" method="post">'
.'<input type="hidden" name="MAX_FILE_SIZE" value="'.$uploadSize.'">';
for($i=0; $i < $UPLOAD_nbFiles; $i++)
echo '<input name="fichiers[]" type="file" /><br />';
echo '<br /><input type="submit" value="Envoyer la purée !" /><br />';
echo '<br />Extensions '.($UPLOAD_acceptedFiles=='' ? 'refusées' : 'acceptées');
echo str_replace('|', ' .*',
($UPLOAD_acceptedFiles==''?$UPLOAD_forbiddenFiles : $UPLOAD_acceptedFiles));
echo '<br />Taille maxi : '.$uploadSize;
echo '</form>'; |
La validation (Les fichiers seront déposés dans le dossier nommé "repertoire" au même niveau que ce script PHP) :
function extension($wfichier)
{
return strtolower(substr($wfichier,
strrpos($wfichier,'.') + 1,
strlen($wfichier) - strrpos($wfichier, '.') - 1));
}
for($i=0; $i < $UPLOAD_nbFiles; $i++)
{
$strUpload = '';
$file = '';
if (isset($_FILES['fichiers']['name'][$i]))
$file = trim(stripslashes($_FILES['fichiers']['name'][$i]));
if ($file == '')
continue;
if ($_FILES['fichiers']['size'][$i] > $_POST['MAX_FILE_SIZE'])
{
$strUpload .= $file.' : Trop gros !<br />';
continue;
}
if (
(($UPLOAD_acceptedFiles=='') && (substr_count($UPLOAD_acceptedFiles, extension($_FILES['fichiers']['name'][$i])) > 0))
|| (($UPLOAD_acceptedFiles!='') && (substr_count($UPLOAD_acceptedFiles, extension($_FILES['fichiers']['name'][$i])) == 0))
)
{
$strUpload .= $file.' : Format non valide<br />';
continue;
}
if (is_file('repertoire/'.$file))
{
$strUpload .= $file.' : Existe déjà !<br />';
continue;
}
if (@copy($_FILES['fichiers']['tmp_name'][$i], 'repertoire/'.$file))
{
if (in_array(extension($file), array('gif', 'jpg', 'png', 'swf', 'swc',
'psd', 'tiff', 'bmp', 'iff', 'jp2',
'jpx', 'jb2', 'jpc', 'xbm', 'wbmp')))
{
$checksize = @getimagesize('repertoire/'.$file);
if (!$checksize)
{
$strUpload .= $file.' : Image incorrecte !<br />';
@unlink($curr.'/'.$file);
continue;
}
}
$strUpload .= $file.' : OK<br />';
}
else
$strUpload.= $file.' : Erreur inconnue<br />';
if (is_file($_FILES['fichiers']['tmp_name'][$i]))
@unlink($_FILES['fichiers']['tmp_name'][$i]);
echo $strUpload.'<br />';
} |
|
Consultez les autres pages sources
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2006
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|