Précédent   Forum du club des développeurs et IT Pro > PHP > Langage > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc. pour PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/01/2007, 22h45   #41
Sub0
Expert Confirmé
 
Avatar de Sub0
 
Homme
Développeur Web
Inscription : décembre 2002
Messages : 3 489
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2002
Messages : 3 489
Points : 3 514
Points : 3 514
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Citation:
Envoyé par paterson
Comment se créé un espace membre (sans verification de l'addresse email)
Il manque un minimum de sécurité selon moi. Le piratage du mot de passe par forcebrute ou la possibilité de créer autant de comptes que l'on veut par exemple...
http://matthieu.developpez.com/authentification
Mais bon, j'admets aussi qu'il n'est pas toujours possible de faire court et efficace à la fois.

Perso, je préfère cette solution à la limite :
http://php.developpez.com/sources/?p...te#authenthttp

Cordialement, Sub0
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2007, 23h23   #42
paterson
Membre confirmé
 
Matthieu
Étudiant
Inscription : septembre 2004
Messages : 393
Détails du profil
Informations personnelles :
Nom : Matthieu
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2004
Messages : 393
Points : 295
Points : 295
Mon ancien hébergeur , ne permétai pas d'envoyer de mail , s'est pourquoi j'avai fait comme sa , maintenant , a par l'accés admin que j'ai fait a la va vite , tout est sécuriser .... ( identification par mail .... )

Le prochain pa , enregistrer l'ip , j'avais deja afficher , maintenant , reste plus qu'as l'enregistrer ....

Mais la , sa va étre long , je suis passer a la programation en c des pic , et je dois finir mon project pour un bien ...
paterson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 13h50   #43
Laurpierre
Membre régulier
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2007
Messages : 10
Points : 75
Points : 75
Envoyer un message via Skype™ à Laurpierre
Par défaut cryptage et décryptage de texte en php

Code :
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
<?php
/*
  string  md5 ( string   str , bool   raw_output )
  md5 calcule le MD5 de la chaîne de caractères str en utilisant
  l'algorithme RSA Data Security, Inc. MD5 Message-Digest Algorithm ,
  et retourne le résultat. Le résultat est un nombre de 32 caractères hexadécimaux.
  Note :Le paramètre raw_output a été ajouté en PHP 5.0.0 et vaut par défaut FALSE .
 
  string  base64_encode ( string   data )
  base64_encode retourne data encodé en base64.
  Cet encodage est fait pour permettre aux informations binaires d'être manipulées
  par les systèmes qui ne gèrent pas correctement les 8 bits,
  comme par exemple, les corps de mail.
  Une chaîne encodée base64 prend environs 33% de plus que les données initiales.
 
   Opérateur Dénomination Effet Syntaxe Résultat
   & ET bit-à-bit Retourne 1 si les deux bits de même poids sont à 1
                              9 & 12 (1001 & 1100)  => 8 (1000)
   | OU bit-à-bit Retourne 1 si l'un ou l'autre des deux bits de même poids est à 1 (ou les deux)
                              9 | 12 (1001 | 1100)  => 13 (1101)
   ^ OU exclusif Retourne 1 si l'un des deux bits de même poids est à 1 (mais pas les deux)
                              9 ^ 12 (1001 ^ 1100)  => 5 (0101)
   ~ Complément (NON) Retourne 1 si le bit est à 0 (et inversement)
                              ~9 (~1001)            => 6 (0110)
 
   srand() initialise le générateur de nombres aléatoires avec seed
   microtime() retourne le stimestamp Unix avec les microsecondes.
 
   rand($Min,$Max) Appelée sans les options $Min et $Max ,
   rand retourne un nombre pseudo-aléatoire entre 0 et RAND_MAX
 
*/
//-----------------------------------------------------------------
// $bEncrypt === TRUE  => cryptage
// $bEncrypt === FALSE => décryptage
function EnCrypt($Text,$Cle, $bEnCrypt = FALSE, $RandMin = 0, $RandMax = 64000)
{  $bCrypt = ($bEnCrypt === TRUE) ? FALSE : TRUE;
   while (TRUE)
   {  if ($bCrypt === TRUE)
      {  $KeyForCrypt = md5($Cle);
         $Text = ($bEnCrypt === FALSE)? base64_decode($Text) : $Text;
      }
      else
      {  srand((double)microtime()*1000000);
         $KeyForCrypt = md5(rand($RandMin,$RandMax));
      }
      for ($StrOut = "", $Cpt=0, $Pos=0; $Pos < strlen($Text); $Pos++, $Cpt++)
      {  $Cpt = ($Cpt == strlen($KeyForCrypt))? 0 : $Cpt;
         $StrOut .= ($bCrypt === FALSE)? substr($KeyForCrypt,$Cpt,1): "" ;
         $StrOut .= substr($Text,$Pos,1) ^ substr($KeyForCrypt,$Cpt,1);
      }
      if ($bCrypt === TRUE)
         break;
      $Text   = $StrOut;
      $bCrypt = TRUE;
   }
   if ($bEnCrypt === TRUE)
      return base64_encode($StrOut);
   for ($String = "", $Cpt = 0, $Pos = 1; $Pos <= strlen($StrOut); $Pos+=2, $Cpt+=2)
         $String.= (substr($StrOut,$Pos,1) ^ substr($StrOut,$Cpt,1) );
   return $String;
}
//-----------------------------------------------------------------
 
//Exemple de l'appel à la fonction EnCrypt:
$Cle = "Forum_des développeurs_PHP";
$Text = "Mon_adresse_email@Web.net";
$Crypt = EnCrypt($Text,$Cle,TRUE,0,1000);
$Decrypt = EnCrypt($Crypt,$Cle);
echo "\nTexte original [".strlen($Text)."]: $Text <Br>";
echo "\nCle [".strlen($Cle)."]: $Cle <Br>";
echo "\nTexte crypté[".strlen($Crypt)."] : $Crypt <Br>";
echo "\nTexte décrypté[".strlen($Decrypt)."] : $Decrypt <Br>";
$Crypt1 = EnCrypt($Text,$Cle,TRUE);
$Decrypt1 = EnCrypt($Crypt1,$Cle);
echo "\nTexte crypté[".strlen($Crypt1)."] : $Crypt1 <Br>";
echo "\nTexte décrypté[".strlen($Decrypt1)."] : $Decrypt1 <Br>";
?>
Laurpierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 16h41   #44
Laurpierre
Membre régulier
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2007
Messages : 10
Points : 75
Points : 75
Envoyer un message via Skype™ à Laurpierre
Par défaut programmation récursive php

Bonjour, ci-dessous un exemple de programmation récursive
Code :
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
////////////////////////////////////////////////////////////////
//programmation récursive en php:
//enregistrement de l'aborescence des dossiers à partir de la directory 'www'
//dans un tableau:
//  appel de la fonction EnumFolders() qui retourne un tableau décrivant les 'path' des dossiers
//  appel de la fonction AffichFolders qui affiche le tableau  des dossiers
//note: l'enregistrement de l'arborescence permet de tracer un graphe, de déterminer  le 'path'
//      pour atteindre un dossier à partir d'un autre dossier.
///////////////////////////////////////////////////////////////
function AffichFolders($ArrayFolders,$Pos = 0)
{
   for ($Space = '', $i = 1; $Pos > 0 && $i <= $Pos; $i++)
         $Space .= "&nbsp;";
   foreach ($ArrayFolders as $Key=>$Value)
   {  $Head = '['.$Key.'] = ';
      if (is_array($Value) && !empty($Value))
      {  if (is_array($Value[0]))
            AffichFolders($Value[0],strlen($Head) + $Pos);
         else
            echo $Space.$Head.$Value[0].'<br>';
         AffichFolders($Value[1],strlen($Head) + $Pos);
      }
      else
         echo $Space.$Head.$Value.'<br>';
   }
}
 
////////////////////////////////////////////////////////////////////////////////
function EnumFolders($Node)
{  $ArrayFolders = array();
   $Count        = 0;
   if ($Dir = opendir($Node)) //open Ditectory
   {  while($File = readdir($Dir))  //open Directory
      {  $Nodebase = basename($File);
         if ($Nodebase=="." || $Nodebase=="..")
            continue;
         // La fonction is_dir() renvoit toujours faux si le handle acquit avec opendir()
         // n'est pas à partir du dossier courrant(getcwd) ;
         // l'exception s'applique à « . » et « .. ».
         $NewNode = $Node.'/'.$File;
         if(is_dir($NewNode))
            $ArrayFolders[$Count] = array($File,EnumFolders($NewNode));
         else
            $ArrayFolders[$Count] = $File;
         $Count++;
      }
   }
   closedir($Dir);
   return $ArrayFolders;
}
/////////////////////////////////////////////////////////////////
$DirRoot = dirname($_SERVER['PHP_SELF']);
$Pos     = strpos($DirRoot,'www');
if ($Pos === FALSE)
$Dirwww = ($Pos === FALSE)? '.' : $Dirwww = substr($DirRoot,0,$Pos + 3);
 echo "<br> Directory: '".$Dirwww."'<br>";
       $ArrayFolders = EnumFolders($Dirwww);
       AffichFolders($ArrayFolders);
?>
Laurpierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 17h34   #45
Sub0
Expert Confirmé
 
Avatar de Sub0
 
Homme
Développeur Web
Inscription : décembre 2002
Messages : 3 489
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 40

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2002
Messages : 3 489
Points : 3 514
Points : 3 514
Envoyer un message via MSN à Sub0 Envoyer un message via Skype™ à Sub0
Par défaut Envoyer un mail avec pièce jointe

• Télécharger PhpMailer ici.
• Vérifier que cette classe soit à la racine de son programme
Code :
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
<?php
require_once('class.phpmailer.php');
$expediteur=@$_POST['expediteur'];
$destinataire=@$_POST['destinataire'];
set_time_limit(0);
 
if(!empty($destinataire)){
  $mail = new PHPmailer();
  $mail->IsHTML(true);
  $mail->FromName='';
  $mail->From=$expediteur;
  $mail->AddAddress($destinataire);
  $mail->AddReplyTo($expediteur);    
  $mail->Subject=@$_POST['subject'];
  $mail->Body=htmlentities(@$_POST['message']);
  if(isset($_FILES['attach']))
    if(is_uploaded_file($_FILES['attach']['tmp_name']))
      $mail->AddAttachment($_FILES['attach']['tmp_name'],$_FILES['attach']['name']);
  if(!$mail->Send())
    echo $mail->ErrorInfo; else
    echo 'Mail envoyé avec succès.'
  echo '<br/>';
  unset($mail);  
}
?>
 
<form method="post" action="" enctype="multipart/form-data">
  Expéditeur: <input type="text" name="expediteur" value=""/><br/>
  Destinataire: <input type="text" name="destinataire" value=""/><br/>
  Sujet: <input type="text" name="subject" value=""/><br/>
  Message: <br/>
  <textarea cols="54" rows="16" name="message"></textarea><br/>
  Pièce jointe: <input name="attach" type="file"/>
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000"/><br/>
  <br/>  
  <input type="submit" value="Envoyer"/><br/>
</form>
Note : La taille de la pièce jointe est limitée à 2Mo en général.

En complément de cette source, voici 2 tutoriels :
http://antoine-herault.developpez.co...ls/php/upload/
http://stephaneey.developpez.com/tut...php/phpmailer/
à+
Sub0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2007, 13h32   #46
Laurpierre
Membre régulier
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2007
Messages : 10
Points : 75
Points : 75
Envoyer un message via Skype™ à Laurpierre
Par défaut Les formulaires dynamiques (multi-pages) en php

Bonjour,
Je viens de terminer la nouvelle version (25/06/2007).
Cette version gère le téléchargement de fichiers et d'images ainsi que l'envoi des ces fichiers et images en pièces jointes.
Pour chaque champ ou chaque page, l'utilisateur peut ajouter des fonctions callback pour ajouter des contrôles personnalisés.
En cas d'erreur, un debug_backtrace est affiché et est envoyé à l'auteur.
Cette version présente un exemple de formulaire pour saisir une adresse
postale:
Pour la France et les DOM-TOM: vous pouvez soit:
- Sélectionner une ville en précisant les premiers caractères
du nom de la ville puis valider pour sélecter la ville souhaitée
- Sélectionner une ville en précisant les premiers caractères
du code postal (département) puis valider pour sélecter la ville souhaitée
- Sélectionner un code poatal en précisant la ville
puis valider pour sélecter le code postal<br>
(lorsque la ville existe dans plusieurs codes postaux)
La ville, le code postal et le pays (si France ou DOM-TOM seront affichés)
Les numeros de telephone sont verifiés pour la France, les DOM-TOM, les
USA, le Canada et les pays voisin de la CEE (Allemagne, Royaume Uni,
Suisse, Espagne, Belgique, Monaco, etc..).
Les numeros de Mobile sont verifiés pour la France, les DOM-TOM et
l'Espagne.

Ci-joint:
les scripts et la documentation sont en libre téléchargement:
(le fichier .zip excède la taille réglementaire) sur la page:
http://www.pierre-laur.fr/Demo.php
[URL="[URL="http://www.pierre-laur.fr/Demo.php"]RL]"]RL]
Fichiers attachés
Type de fichier : zip sample_laur.zip (396,1 Ko, 14 affichages)
Laurpierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2007, 19h08   #47
taffMan
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
Par défaut échantillon de texte

Amis codeurs bonjour!

En passant une petite fonction que j'ai humblement développé qui permet d'extraire un échantillon d'un texte sans couper le dernier mot du String en deux (le premier paramètre est la longueur max du string au final, et le second est votre String contenant votre texte) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function sampleString($maxLengthStr, $txt){
 
		$txt = strip_tags($txt);
 
		if(strlen($txt) < $maxLengthStr){
			$maxLengthStr /= 2;
		} 
 
		  $txt = substr($txt, 0, $maxLengthStr);
		  $lastWord = strrchr($txt, " ");
		  $txt = substr($txt, 0, strlen($txt) - strlen($lastWord));
 
		  return $txt;
	}
à noter qu'on enlève avec "strip_tags()" toute balise html, pour éviter qu'une fois cet échantillon placé dans du code html, les balises éventuellement non fermées ne viennent interférer avec le reste du code html.

taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2007, 11h47   #48
haltabush
Membre émérite
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 822
Points : 822
c'est normal, ca?
Code :
1
2
3
if(strlen($txt) < $maxLengthStr){
			$maxLengthStr /= 2;
		}
Je ne vois pas bien l'intérêt... Si le texte à afficher est plus petit que le nombre max de caractères, ben tant mieux, non?
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/02/2007, 16h07   #49
Laurpierre
Membre régulier
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2007
Messages : 10
Points : 75
Points : 75
Envoyer un message via Skype™ à Laurpierre
Par défaut Les formulaires en php (nouvelle release)

Bonjour, ci-dessous la doc de la nouvelle release.
Le test des scripts, la doc (US et FR) ainsi que les scripts sont en téléchargement sur la page
http://www.pierre-laur.fr

Merci de la sanction, Laurpierre
en pièce jointe la doc en français
Fichiers attachés
Type de fichier : txt Doc_Script_fr.txt (20,0 Ko, 14 affichages)
Laurpierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 19h57   #50
taffMan
Membre du Club
 
Inscription : septembre 2006
Messages : 184
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 184
Points : 43
Points : 43
haltabush, çe n'est pas important ce qui compte c'est le reste du code
taffMan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2007, 22h21   #51
|PaRa-BoL
Membre chevronné
 
Avatar de |PaRa-BoL
 
Inscription : novembre 2003
Messages : 736
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : novembre 2003
Messages : 736
Points : 781
Points : 781
Je viens de finir une petite fonction pour vérifier la validité d'une page, il existe peut être d'autre moyen, merci alors de m'en faire part
(Utilise le module libcurl)

Code :
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
 
function check_url($url)
{
	$ch = curl_init();
 
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
	curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 
 
	$data = curl_exec($ch);
	if (!$data) {
		$ret = false;
	} else {
		$data = str_replace("\r", "", $data);
		list($header, $data) = explode("\n", $data, 2);
 
		$state = explode(' ', $header);
		$state = $state[1];
 
		if ($state != '200' && $state != '301' && $state != '302') {
			$ret = false;
		} else {
			$ret = true;
		}
	}
	curl_close($ch);
 
	return $ret;
}
__________________
http://www.ape-project.org/
|PaRa-BoL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/03/2007, 13h29   #52
Laurpierre
Membre régulier
 
Inscription : février 2007
Messages : 10
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : février 2007
Messages : 10
Points : 75
Points : 75
Envoyer un message via Skype™ à Laurpierre
Par défaut Traitement des erreurs avec Trace sur fichier Log

Posté le: 15 Mar 2007, 13:23 Sujet du message: Trace des erreurs et écriture sur un fichier log 'Trace.log'

--------------------------------------------------------------------------------

Bonjour,
Ci-joint un exemple permettant de voir un trace des fonctions qui ont abouti à une erreur. Le trace est écrit dans le fichier "Trace.log" du répertoire couurant.
Cet exemple est opérationnel avec php5. Pour le rendre opérationnel avec php4, il est nécessaire de modifier les balise /*#V5*/ par /*#V5__ et /*#V4__ par /*#V4*/.
La class Obj_Trace est la classe qui gère l'écriture des fonctions appelées ainsi que les valeurs des différents paramètres.
La class Obj_GetObject permet d'accéder à toutes les attributs private ou protected des class dérivées de Obj_GetObject.
En fin de script, un exemple permet de tester ce script (division par zéro)
Fichiers attachés
Type de fichier : php TestError.php (13,7 Ko, 18 affichages)
Laurpierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/04/2007, 15h05   #53
paterson
Membre confirmé
 
Matthieu
Étudiant
Inscription : septembre 2004
Messages : 393
Détails du profil
Informations personnelles :
Nom : Matthieu
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2004
Messages : 393
Points : 295
Points : 295
Script qui requière , l'extension GD !!!

Redimentionner une image , en conservant ses proportion
Ceci peux servir pour une galerie .

Code :
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
<?php
//les nom que l'on souhaite 
$image="./tt.jpg";
$imagem="tt2.jpg";//.JPG , pour la mignature . 
//mesure de la taille 
$size=getimagesize($image);
$largeur=$size[0];
$longeur=$size[1];
 
//La grandeur seras au maximum de 150x150
if($largeur>$longeur)
	{
	$x=150;
	$y=$longeur*$x/$largeur;
	}
else
	{
	$y=150;
	$x=$largeur*$y/$longeur;
	}
 
 
$source = imagecreatefromjpeg("$image");
$destination = imagecreatetruecolor($x, $y); 
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
 
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
imagejpeg($destination, $imagem);
// Pour observer le résultat , on peux supprimer .. 
echo"<img src=\"$image\"><br><br><img src=\"$imagem\">";
?>
paterson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 15h47   #54
Rodrick
Membre du Club
 
Avatar de Rodrick
 
Homme
Développeur informatique
Inscription : avril 2005
Messages : 87
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : avril 2005
Messages : 87
Points : 45
Points : 45
Par défaut Conversion Des Caractères Spéciaux Dans Une Base De Données Mysql

Ce script convertit les caractères spéciaux tel que les simple quote ou les accents ... dans tous les champs d'une base de données MySQL avec la fonction htmlentities.

Le script prend en compte s'il y a plusieurs clés primaires mais s'il y en a aucune dans une table il passera à la table suivante.
Il prend aussi en compte seulement les champs qui ne sont pas numériques.
Si des personnes pouvaient me conseiller pour réduire le temps d'execution.

Code :
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
<?php
$serveur = "localhost";
$user = "root";
$pwd = "";
$bd = "test";
$conx = mysql_connect($serveur,$user,$pwd);
mysql_select_db($bd,$conx);
set_time_limit(0);
 
// Liste les tables
echo "<h3>Conversion des caractères spéciaux</h3>";
$listtable = mysql_list_tables($bd);
while ($ntable=mysql_fetch_array($listtable))
{
   $tpssleep = 0;
   $tps0 = time() ;
   $nomtable= $ntable[0];
   $sql = "SELECT * FROM `$nomtable`";
   $req = mysql_query($sql);
   // Liste de tous les champs
   $i=0;
   $pkey = "";
   $chp ="";
   while ($i < mysql_num_fields($req)) {
         $resf=mysql_fetch_field($req,$i);
         // Liste de toutes les clés primaires et des champs non numériques
         if ($resf->primary_key==1){
            if (!empty($pkey))
               $pkey .= "|";
            $pkey .= $resf->name  ;
         }
         if ($resf->numeric==0){
            if (!empty($chp))
               $chp .= "|";
            $chp .=  $resf->name ;
         }
         $i++;
   }
   if ((!empty($chp)) && (!empty($pkey))){
      // Création de la requete de modification
      $clepri = explode("|",$pkey);
      $chp2=explode("|",$chp);
      while($res=mysql_fetch_array($req)){
          $reqU="UPDATE `$nomtable` SET ";
          $reqW= "`$clepri[0]`='" . $res[$clepri[0]] . "'";
          if (count($clepri)>1){
             $nbrechp= count($clepri);
             for ($i=1;$i<$nbrechp;$i++)
                 $reqW.= ",`$clepri[$i]`='" . $res[$clepri[$i]] . "'";
          }
          $reqS = "`$chp2[0]`='" . htmlentities($res[$chp2[0]], ENT_QUOTES) . "'";
          if (count($chp2)>1){
             $nbrechp= count($chp2);
             for ($i=1;$i<$nbrechp;$i++)
                 $reqS.= ",`$chp2[$i]`='" . htmlentities($res[$chp2[$i]], ENT_QUOTES) . "'";
          }
          $reqU .= $reqS . " WHERE " . $reqW;
          mysql_query($reqU);
      }
      $tpssleep = 5;
   }
   $tps = time() - $tps0;
   echo "<h4>TABLE : $nomtable fait en $tps secondes</h4>";
   sleep($tpssleep);
}
?>
__________________
Allez une tite bière et au boulot!!!
Rodrick est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2007, 18h49   #55
dj-julio
Membre expérimenté
 
Avatar de dj-julio
 
Inscription : décembre 2005
Messages : 743
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France, Finistère (Bretagne)

Informations forums :
Inscription : décembre 2005
Messages : 743
Points : 574
Points : 574
Par défaut Formulaire (HTML/PHP/JS) de contact

Auteur : dj-julio (JuLi0)
Utilité : Vous pouvez l'intégrer directement à vos sites web afin d'offrir un espace permettant l'envoi de message de la part des visiteurs.

Il faut au préalable avoir une base de données (mysql) contenant la table :
renseignements(id, date, nom, prenom, email, message) (id = autoIncrement et clé primaire, date = DATETIME, message=Texte).

Il y a 2 pages à mettre sur le serveur :Je colle le code ci dessous également :

gencode.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
header ("Content-type: image/jpeg");
 
// Ici on choisit la taille largeur, hauteur
$im = imagecreate (30,20);
 
// Choix des couleurs ici ça donne du Gris
$background_color = imagecolorallocate ($im, 217, 196, 29);
 
// Choix de la couleur de la police, ici Noir
$ecriture_color = imagecolorallocate ($im, 180, 80, 31);
 
//on récupère le texte généré du formulaire
//et sa position taille police,vertical, horizontal
imagestring ($im, 10, 3, 2, $_GET['code'] , $ecriture_color);
imagejpeg($im);
?>
form_contact.php
Code :
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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
<?php
session_start();
//Ne rien écrire avant le "session_start();"
/*
Formulaire de demande de renseignements.
* Connexion à une base Mysql
* Système anti-flood
* Envoi de la demande par mail
 
**Prerequis ==> Avoir une base SQL contenant une table : RENSEIGNEMENTS(id, date, nom, prenom, email, message) (id = autoIncrement et clé primaire, date = DATETIME, message=Texte)
 
*/
//Remplissez ici vos informations de connexion.
$server="serveur.SQL";
$pass="pass.SQL";
$base="base.SQL";
$user="utilisateur.SQL";
 
$destinataire="VotreMail@Serveur.extension"; //Entrez ici le mail qui recevra les messages
 
 
mysql_pconnect($server, $user, $pass);
mysql_selectdb($base); 
 
if (isset($_POST['txtMsg']))
{
    if($_SESSION['jeton']==$_POST['jeton']) //Système anti-flood
    {
        if($_POST['verifCode']==$_POST['verifCode2']) //a chaque refresh de la page, un nouveau jeton est créée et comparé à celui qui est en session.
        {
            $jeton=md5(uniqid(mt_rand(), true));  //Création du jeton.
            $_SESSION['jeton']=$jeton;    //Mise en session du jeton
 
            $mail=mysql_real_escape_string($_POST['txtMail']);            
            //Vérification de l'adresse email
            $carOK   = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]';   // caractères autorisés avant l'arobase
            $domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)
 
            $regex = '/^' . $carOK . '+' .   // Une ou plusieurs fois les caractères autorisés avant l'arobase
            '(\.' . $carOK . '+)*' .         // Suivis par zéro point ou plus
                                            // séparés par des caractères autorisés avant l'arobase
            '@' .                           // Suivis d'un arobase
            '(' . $domain . '{1,63}\.)+' .  // Suivis par 1 à 63 caractères autorisés pour le nom de domaine
                                            // séparés par des points
            $domain . '{2,63}$/i';          // Suivi de 2 à 63 caractères autorisés pour le nom de domaine
 
            // test de l'adresse e-mail
            if (preg_match($regex, $mail)) {    } 
            else {    $mail=""; }
 
            $nom=mysql_real_escape_string($_POST['txtNom']);                
            $prenom=mysql_real_escape_string($_POST['txtPrenom']);
            $msg=mysql_real_escape_string($_POST['txtMsg']);
            $civilite=mysql_real_escape_string($_POST['civilite']);
 
            $DateEnvoiMysql=Date("Y-m-d H:i:s");
 
            $reqInsert="INSERT INTO  renseignements (date, civilite, nom, prenom, email, message) VALUES ('".$DateEnvoiMysql."', '".$civilite."', '".$nom."', '".$prenom."', '".$mail."', '".$msg."')";
            $reqInsert=mysql_query($reqInsert);
 
            $affichMail = "";
            if($mail!="")
            {
                $affichMail = '<br>Email du demandeur : '.stripslashes($_POST['txtMail']).'<br>';
            }
            $Date = date("d-m-Y");
            $Heure = date("H:i");
            $Mail  = 'Le '.$Date.' &agrave; '.$Heure.', vous avez re&ccedil;u une demande de renseignements !';
            $Mail .= '<br><br><strong>De : '.$_POST['civilite'].' '.stripslashes($_POST['txtNom']).', '.stripslashes($_POST['txtPrenom']).'</strong>'.$affichMail.'<br>';
            $Mail .= '<br><strong>Message : </strong><br>';
            $Mail .= nl2br(stripslashes($_POST['txtMsg']));
 
            //Préparation de l'en-tête du mail.
            $Headers = "";
            if ($mail!="")
            {
                $mailDemandeur = mysql_real_escape_string($_POST['txtMail']);
                $Headers .= "From: <$mailDemandeur>\n";
            }
            $Headers .= "X-Mailer: PHP\n";
            $Headers .= "Content-Type:text/html;charset=iso-8859-1\n";
            $Headers .= "Content-Transfer-Encoding: 8bit\n";
 
            //Envoi du mail avec la fonction mail() du php.
            if (mail($destinataire, "Demande de renseignements", "$Mail", "$Headers"))         {     $_SESSION['envoimail']="OK";    } //Sur la page accueil.php (page vers laquelle on est redirigé
            else    {        $_SESSION['envoimail']="BAD";    } //En lisant la valeur envoimail qui est en session, il est possible d'afficher si le message a bien été envoyé ou non.
            echo "<b>Le message à bien été envoyé, merci.</b>";
 
            //Redirection en javascript 
            echo "<SCRIPT LANGUAGE='JavaScript'>\r\nfunction redirect() {\r\n window.location='accueil.php'\r\n }\r\n setTimeout('redirect()',1); \r\n </SCRIPT>\r\n";
            //Il est également possible de la faire comme cela :
            //print '<META http-equiv="refresh" content="0;URL=accueil.php">';
        }
        else    {
            echo "<b>Erreur de code de sécurité, veuillez recommencer.</b>";
        }
    }
    else    {
        $jeton=md5(uniqid(mt_rand(), true));
        $_SESSION['jeton']=$jeton;
    }
}
else {
    $jeton=md5(uniqid(mt_rand(), true));
    $_SESSION['jeton']=$jeton;
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function VerifCP() {
    if(isNaN(document.formulaire.txtCP.value))    {
        alert("N'utilisez que des chiffres pour le code postal.");
        document.formulaire.txtCP.value = "";
        document.formulaire.txtCP.focus();
        return false;
    }
}
 
function NbreCaractRestants() {    
    var maxlimit=300;
    if (document.formulaire.txtMsg.value.length > maxlimit)     {
        document.formulaire.txtMsg.value = document.formulaire.txtMsg.value.substring(0, maxlimit);
    }
    else    {
        document.formulaire.txtCompteur.value = maxlimit - document.formulaire.txtMsg.value.length;
    }
}
 
function Validation()    {
    var j="stop";    
    for (var i=0;i<=2;i=i+1)    {    
        if(document.formulaire.civilite[i].checked==true)        {        
        var j="ok";        }
    }
    if(j=="stop")    {
        alert ('veuillez sélectionner votre civilité');
        document.formulaire.civilite[0].focus();
        return false;
    }
    if(document.formulaire.txtNom.value == "")    {
        alert ('veuillez entrer votre nom');
        document.formulaire.txtNom.focus();
        return false;
    }
    if(document.formulaire.txtPrenom.value == "")    {
        alert ('veuillez entrer votre prénom');
        document.formulaire.txtPrenom.focus();
        return false;
    }
 
    if(document.formulaire.txtMsg.value == "")    {
        alert ('veuillez laisser un message');
        document.formulaire.txtMsg.focus();
        return false;
    }
 
    if(document.formulaire.verifCode.value!=document.formulaire.verifCode2.value)    {
        alert ('Vous avez entré un mauvais code, veuillez recommencer.');
        document.formulaire.verifCode.focus();
        return false;
    }
 
    else    {
        return true;
    }
}
</script>
<link rel="stylesheet" media="screen" type="text/css" title="feuille_css" href="style.css" />
<style type="text/css">
.Style1 {font-size: x-small}
.Style2 {font-size: 30px}
input {    -moz-border-radius: 10px; }
input.bouton {     border:2px outset black; font-weight:bold; cursor: pointer; }
input.bouton:hover{ }
input.bouton:active{ }
input.champsMajuscule {    text-transform: uppercase; }
#verifCode {  text-transform:uppercase; }
</style>
 
<link href="style.css" rel="stylesheet" type="text/css">
<title>TITRE DE LA PAGE - Renseignements</title><table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><div align="center"><strong><br>          
      <span class="H1"> &nbsp;Demande de renseignements&nbsp;</span><br>
      <br>
    </strong></div></td>
  </tr>
</table>
<table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td><form action="" method="post" name="formulaire" id="formulaire" onSubmit="return Validation();">
        <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td width="32%">
              <div align="center">
                <label>Madame              
                <input type="radio" name="civilite" value="Madame">
                </label>
              </div></td>
            <td width="33%">
              <div align="center">
                <label>Mademoiselle              
                <input type="radio" name="civilite" value="Mademoiselle">
                </label>
              </div></td>
            <td width="35%"><p align="center"><label>Monsieur              
                <input type="radio" name="civilite" value="Monsieur">
                <br>
                </label>
              </p></td>
          </tr>
        </table>
        <br>
        <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td><label><strong>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Nom </strong>
                <input name="txtNom" type="text" class="champsMajuscule" id="txtNom" size="10">
            </label>              <label><strong>Prénom </strong><input name="txtPrenom" type="text" class="Capitale" id="txtPrenom" size="15">
            </label></td>
          </tr>
        </table>
        <br>
        <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td><label><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Email</strong>
                <input name="txtMail" type="text" id="txtMail" size="30">
            </label></td>
          </tr>
        </table>
        <br>
        <table width="400"  border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td colspan="2"><label><strong>&nbsp;&nbsp; Message </strong><textarea name="txtMsg" cols="30" rows="4" wrap="PHYSICAL" id="txtMsg" OnKeyPress="return NbreCaractRestants();"></textarea>
                <strong>            </strong> </label>              </td>
          </tr>
          <tr>
            <td width="21%">&nbsp;</td>
            <td width="79%">Il vous reste :
              <input name="txtCompteur" type="text" disabled id="txtCompteur" value="300" size="3" maxlength="3">
&nbsp; caract&egrave;res </td>
          </tr>
        </table>
        <table width="80%"  border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
          </tr>
        </table>
        <div align="center"><br>
        <?php
        //Création de l'image de sécurité
function cle() {
    //nombre de chiffres total
    $taille=3;
 
    //chaîne utilisée, on peut rajouter des lettres
    $chiffre="123456789";
    srand(time());
 
    for ($i=0;$i<$taille;$i++)    {    
        //on mélange le tout
        $key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
    }    
    return($key);
}
$code = cle();                            
?>
<img src="gencode.php?code=<?php echo $code; ?>"> Code de s&eacute;curit&eacute;, &agrave; recopier ici 
  <input name="verifCode" type="text" class="input0" id="verifCode" size="3" maxlength="3">
  <input type="hidden" name="verifCode2" value=<?php echo $code; ?>>
  <input type="hidden" name="action" value="submit">
  <p>
    <input name="btnEnvoi" type="submit" id="btnEnvoi" value="Envoyer" class="bouton">
          <strong>
          <input name="jeton" type="hidden" id="jeton" value="<?php echo $jeton; ?>">
          </strong></p>
        </div>
      </form>      
      </td>
  </tr>
</table>
</html>
J'espère voir cette source sur la page des codes sources du site
N'hésitez pas à me contacter en cas de problème avec celle-ci.

@+
__________________
Mon Site/Cv.
dj-julio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 11h17   #56
highman
Membre habitué
 
Inscription : mars 2006
Messages : 188
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations forums :
Inscription : mars 2006
Messages : 188
Points : 118
Points : 118
Par défaut Renvoi JSON d'une requete

Ce script renvoi le resultat d'une requête en JSON sous forme d'un tableau de tableaux. On peut y accéder en javascript par la suite

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
function jsonResult($res){
	$nbCol = mysql_num_fields($res);
 
	$jsonString = '{ "Results" : [';
	while($champs = mysql_fetch_array($res)){
 
		$jsonString .= '[';
		for($i = 0 ; $i < $nbCol ; $i++){
			$jsonString .= '"'$champs[$i].'",';
		}
		$jsonString = substr($jsonString, 0, (strlen($jsonString) - 1));
		$jsonString .= '],';
	}
 
	$jsonString = substr($jsonString, 0, (strlen($jsonString) - 1));
	$jsonString .= ']}';
 
	return utf8_encode($jsonString);
}
__________________
Pierre : abusé, regarde par la fenêtre, les gosses ils passent leur vie à faire du vélo dehors ...
tom : ils ont pas de pc ou quoi ?
highman est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 12h28   #57
JmL40
Membre actif
 
Avatar de JmL40
 
Inscription : mai 2007
Messages : 311
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 311
Points : 191
Points : 191
Envoyer un message via MSN à JmL40
Par défaut Intégration FEUILLE EXCEL dans une PAGE WEB

Bonjour,

Ce script permet d'intégrer facilement des feuilles Excel dans vos page web. Il est entièrement pesonnalisable.

Pour intégrer ces feuilles Excel, le script génère un fichier excel contenant des données contenues dans une BD MySQL. Le fichier génère sera ensuite ouvert dans la page web correspondante. En fin d'execution, ce fichier excel sera supprimer.

Variante :

- Il est possible d'ouvrir un fichier excel quelconque en précisant le chemin d'accès, sans prendre en compte la création d'un fichier xls.

- Il est possible de conserver le fichier générer en vue d'une autre utilsation

Avantages :

L'intégration d'une feuille excel dans une page web permet de mettre à disposition tous les outils de filtrage, de calcul que propose Excel au sein de page web.



-------------------- Voici le code associé --------------------

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
//====================================
// INFORMATIONS DE CONNEXION A LA  BASE DE DONNEES
//====================================
 
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'dbname';
 
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
//====================================
// CREATION DU FICHIER EXCEL (VIERGE)
//====================================
 
// Pour des raisons pratiques et si le script est exécuter fréquemment on peut attribuer la dâte et l'heure à ce fichier
/*$date = date("Y-m-d-H-i-s"); 
$Fichier = $date;*/
 
// sinon on attribut un nom en dur, ici test.xls
fopen("test.xls","w+");  
$file = ("test.xls"); 
 
//on ouvre le fichier 
if(!$myfile = fopen($file, "w+"))     
{
     print("erreur: ");
     print("'$Fichier' n'existe pas!\n");
     exit;
}
Code :
1
2
3
4
5
6
7
 
//====================================
// REQUETE DE SELECTION DES DONNES (BD MYSQL)
//====================================
// on selectionne les enregistrements
	$sql = "SELECT NomLignee From TbLigIdentite"; 
	$req = mysql_query($sql,$link);
Le traitement et l'intégration des données se fait grâce à un TABLE (et oui !) et grâce à la fonction fwrite().

Code :
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
 
//====================================
// TRAITEMENT DES DONNEES ET INTEGRATION DANS LA FEUILLE EXCEL
//====================================
// on fait une boucle qui va faire un tour pour chaque enregistrement  
$i=0;
$Nmax = 1000; // nombre par page
$Ncur = 0; // n° de la fiche courante
$Ndeb = 0; // 1ère fiche transmise par l'URL
 
$text1 = "<table border = 1><tr>
<td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 1</strong></b></font></td>
<td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 2</strong></b></font></td>
<td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 3</strong></b></font></td>
<td width=\"500\" height=\"100\" valign=\"top\"><font size=\"4\" face=\"Arial\"><b><strong>Colonne 4</strong></b></font></td>
</tr>";
 
fwrite($myfile,$text1,strlen($text1));
 
while(($data = mysql_fetch_array($req,$link)) && ($Ncur<$Nmax+$Ndeb)) {
   if($Ncur>=$Ndeb) {
 
		$donnees1=$data["data1"];
		$donnees2=$data["data2"];
		$donnees3=$data["data3"];
		$donnnes4=$data["data4"];
		$donnees5=$data["data5"];
 
$text2 = "<table border = 1><tr>
<td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees1</b></font></td>
<td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees2</b></font></td>
<td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees3</b></font></td>
<td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees4</b></font></td>
<td width=\"50\" valign=\"top\"><font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><b>$donnees5</b></font></td>
</tr></table>";
 
}
   // une de plus
   $Ncur++;
   fwrite($myfile,$text2,strlen($text2));
 
}
 
//fermeture fichier
fclose($myfile);   //on ferme le fichier
chmod ("test.xls", 0777);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
//====================================
// INTEGRATION DU FICHIER DANS LA PAGE WEB
//====================================
<html xmlns:v="urn: schemas-microsoft-com:vml"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns="-//W3C//DTD HTML 4.0//EN">
<body>
   <object id="MySpreadsheet">
	 <param name="src" value="test.xls" ><a href="test.xls">EXPORTER</a>
 
   </object>
</body>
</html>
 
<?php $erreur = unlink("test.xls"); ?>
Tout y est, a vos clavier !

Cordialement
JmL40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 20h23   #58
Yogui
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 722
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 722
Points : 28 861
Points : 28 861
Citation:
Intégration FEUILLE EXCEL dans une PAGE WEB
Attention, ce n'est pas compatible avec tous les navigateurs.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2007, 10h28   #59
genova
Membre chevronné
 
Avatar de genova
 
Inscription : septembre 2004
Messages : 487
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 487
Points : 602
Points : 602
Envoyer un message via MSN à genova
Petite astuce pour utiliser des constructeurs et destructeurs en PHP4 (Attention, les destructeurs seront cependant appelés en fin de page, et non lors de la description d'un objet - affectation / unset).

Code :
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
<?php
/*
** Toutes les classes doivent étendre cette classe
*/
class _model_
{
	/*
	** En PHP4, le constructeur a le nom de la classe.
	** Etant donné que func_get_args() copie les paramètres (et donc ne garde pas les références),
	** on utilise une astuce necessitant des paramètres définit, mais pas forcément utilisé.
	*/
	function _model_($arg1 = NULL, $arg2 = NULL, $arg3 = NULL, $arg4 = NULL, $arg5 = NULL, $arg6 = NULL, $arg7 = NULL, $arg8 = NULL, $arg9 = NULL, $arg10 = NULL, $arg11 = NULL, $arg12 = NULL)
	{
		// Déclaration du destructeur
		register_shutdown_function(array(&$this, '__destruct'));
 
		$total = func_num_args();
		if (!$total)
		{
			$this->__construct();
		}
		else
		{
			// Procédure visant à garder les références des arguments
			$args = $pass = array();
			for ($i = 1; $i <= $total && $i <= 12; $i++)
			{
				$args[] = &${'arg' . $i};
				$pass[] = '$arg' . $i;
			}
 
			// Appel du constructeur PHP5 manuellement en PHP4
			eval('$this->__construct(' . implode(', ', $pass) . ');');
		}
	}
 
	/*
	** En PHP5, __construct() devient le constructeur prioritaire
	*/
	function __construct()
	{
	}
 
	/*
	** Destructeur PHP5, appelé via register_shutdown_function pour PHP4
	*/
	function __destruct()
	{
	}
 
	/*
	** Affichage intéligent d'un objet, valable uniquement pour PHP5
	*/
	function __toString()
	{
		$str = '<b>Classname :</b> ' . get_class(&$this) . '<br />';
		$str .= '<b>Properties :</b><ul style="margin: 0">';
		foreach ($this AS $property => $value)
		{
			$str .= '<li><b>' . $property . '</b> = <pre style="display: inline">' . var_export($value, TRUE) . '</pre></li>';
		}
		$str .= '</ul>';
 
		return ($str);
	}
 
	/*
	** Affectation de propriété
	*/
	function _set($property, $value)
	{
		$this->$property = $value;
	}
 
	/*
	** Valeur d'une propriété
	*/
	function _get($property)
	{
		if (property_exists(&$this, $property))
		{
			return ($this->$property);
		}
		return (NULL);
	}
}
 
/*
** Implémentation du clonage d'objet en PHP4
*/
if (version_compare(phpversion(), '5.0') < 0)
{
    eval('function clone($object){return($object);}');
}
?>
A l'utilisation c'est très simple :
Code :
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
<?php
include('class/model.php');
 
class Database extends _model_
{
	var $id;
 
	function __construct($server, $login, $pass, $database)
	{
		$this->id = mysql_connect($server, $login, $pass);
		mysql_select_db($database)
	}
 
	function query($sql)
	{
		return (mysql_query($sql) OR die(mysql_error()));
	}
 
	function __destruct()
	{
		mysql_close($this->id);
	}
}
 
$db = new Database('localhost', 'root', '', 'dvp');
$db->query('SELECT * FROM ma_table');
?>
marchera aussi bien pour PHP4 que PHP5
__________________
Testez le forum Fire Soft Board, un forum libre, gratuit et français.

Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.
genova est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 12h14   #60
JmL40
Membre actif
 
Avatar de JmL40
 
Inscription : mai 2007
Messages : 311
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 311
Points : 191
Points : 191
Envoyer un message via MSN à JmL40
Bonjour,

J'ai posté, il y a quelques jours une méthode permettant d'intégrer une feuille excel dans une page Web.

Je vous propose maintenant une nouvelle méthode toujours d'intégration de feuille Excel dans une page web mais plus pratique, et surtout utilisant la classe PHPWRITEEXCEL.

Le source est disponible ici (Cf Dernier Post):

http://www.developpez.net/forums/sho...96#post2228896

La classe PHPWRITEEXCEL peut se télécharger à cet url :

http://www.bettina-attack.de/jonny/v...hp_writeexcel/
JmL40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h48.


 
 
 
 
Partenaires

Hébergement Web