Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1620 connectés 

 

 

 Mot :   Pseudo :  
 
 Page :   1  2  3  4  5  6  7  8  9  10  11  12
Auteur Sujet :

Tuto des scripts PHP les plus demandés et des astuces.

n°975491
skeye
Posté le 08-02-2005 à 15:40:28  profilanswer
 

Reprise du message précédent :

Berceker United a écrit :

il faut que tu te détende mec tes crispé [:negueu]


...et toi il faudrait que tu apprennes à reconnaitre quand tu as tort...[:itm]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 08-02-2005 à 15:40:28  profilanswer
 

n°975509
chrisbk
-
Posté le 08-02-2005 à 15:55:37  profilanswer
 

quand vous aurez fini de polluer son topic ... [:icon8]

n°975563
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-02-2005 à 16:23:14  profilanswer
 

chrisbk a écrit :

quand vous aurez fini de polluer son topic ... [:icon8]


 
Son titre pollue notre forum [:dawa]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°975762
cerel
Posté le 08-02-2005 à 19:57:44  profilanswer
 

Citation :

antp
Champion des excuses bidons


(j'ai rien invente, c'est lui-meme qui le dit)
Hmmm
:D

n°975829
drasche
Posté le 08-02-2005 à 21:29:15  profilanswer
 

Mais non, il a raison.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°975848
antp
Super Administrateur
Champion des excuses bidons
Posté le 08-02-2005 à 21:55:54  profilanswer
 

Arrêtez de me ressortir cette citation quand je dis un truc sérieux :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°975889
T509
$job->GetJob(now)
Posté le 08-02-2005 à 22:54:29  profilanswer
 

berceker united a écrit :


 
12 - Pphpy![:corriollan] as-tu une méthode pour bien organiser sont fichier?
 


 
Bonne idée ce sujet.
 
Je trouve que la méthode expliquée dans cette section n'est pas à conseiller. Je suis partisan d'une chose : séparer le fond de la forme. c'est pour moi très mauvais (ne serait-ce qu'en débuggage) de mélanger HTML et PHP.
 
Pour bien d'organiser je conseille plutôt une organisation en plusieurs fichiers

  • Le script PHP qui nous intéresse
  • un fichier de config pour les constantes et les variables de configuration. Cela permet, lors du changement d'un paramètre , de ne pas parcourir chaque script à la recherche de l'utilisation de ce paramètre. C'est typiquement le cas lors du passage du développement à la production avec les bases de données.
  • Les fonctions "génériques" succeptibles d'être utilisées un peu partout, je les mets soit dans un fichier à part (genre ma_fonction_bidule.php) que j'apelle par un include () soit dans une genre de bibliothèque de fonctions perso (biblio_sql.php par exemple).
  • Un template HTML/XHTML/XML/WML/... qui repenne toute la mise en page du site et dans lequel j'ai laissé des mots clé (formaté comme cela <MOT-CLE> ou ~MOT-CLE~)
  • Le script annoncé plus haut prépare les données (session, includes(), ...) et les met en tableau. Le tableau des mots clé est connu (cf le fichier de config) et un simple preg_replace() sur le template me fait la mise en forme.


cette méthode a plusieurs avantages : différencier le débug PHP, les corrections de mise en page et les modifications de config. De plus si demain, vous voulez changer la mise en page permet de simplement changer le template sans avoir à toucher le script qui est toujours valable.
 
Voilà pour l'organisaton des scripts
 
Pour les dates, j'ai une petite contribution : Gérer les dates en PHP

n°975897
Berceker U​nited
PSN : berceker_united
Posté le 08-02-2005 à 23:14:47  profilanswer
 

T509 a écrit :

Bonne idée ce sujet.
 
Je trouve que la méthode expliquée dans cette section n'est pas à conseiller. Je suis partisan d'une chose : séparer le fond de la forme. c'est pour moi très mauvais (ne serait-ce qu'en débuggage) de mélanger HTML et PHP.
 
Pour bien d'organiser je conseille plutôt une organisation en plusieurs fichiers

  • Le script PHP qui nous intéresse
  • un fichier de config pour les constantes et les variables de configuration. Cela permet, lors du changement d'un paramètre , de ne pas parcourir chaque script à la recherche de l'utilisation de ce paramètre. C'est typiquement le cas lors du passage du développement à la production avec les bases de données.
  • Les fonctions "génériques" succeptibles d'être utilisées un peu partout, je les mets soit dans un fichier à part (genre ma_fonction_bidule.php) que j'apelle par un include () soit dans une genre de bibliothèque de fonctions perso (biblio_sql.php par exemple).
  • Un template HTML/XHTML/XML/WML/... qui repenne toute la mise en page du site et dans lequel j'ai laissé des mots clé (formaté comme cela <MOT-CLE> ou ~MOT-CLE~)
  • Le script annoncé plus haut prépare les données (session, includes(), ...) et les met en tableau. Le tableau des mots clé est connu (cf le fichier de config) et un simple preg_replace() sur le template me fait la mise en forme.


cette méthode a plusieurs avantages : différencier le débug PHP, les corrections de mise en page et les modifications de config. De plus si demain, vous voulez changer la mise en page permet de simplement changer le template sans avoir à toucher le script qui est toujours valable.
 
Voilà pour l'organisaton des scripts
 
Pour les dates, j'ai une petite contribution : Gérer les dates en PHP


 
 
Merci pour la contribution en faite j'ai parlé juste au niveau du fichier toi tu parles de la structure du site mais néanmoins je rajouterais ton sujet ;)

n°975898
T509
$job-&gt;GetJob(now)
Posté le 08-02-2005 à 23:19:17  profilanswer
 

Cela ne change pas mon opinion, mélanger PHP et HTML, c'est déguelasse. De plus en général lorsque tu crées un script il n'est généralement pas stand-alone. Donc ma contrib a son sens.
Même si au départ c'est lourd à gérer, cela donne une habitude structuration importante qui permet de s'y retrouver dès que cela devient complexe.
 
Je me souviens de mon premier site : je n'ai pas envie d'y remettre le nez à cause d'un manque évident de structure ... :\


Message édité par T509 le 08-02-2005 à 23:20:48
n°975919
Berceker U​nited
PSN : berceker_united
Posté le 08-02-2005 à 23:45:17  profilanswer
 

T509 a écrit :

Cela ne change pas mon opinion, mélanger PHP et HTML, c'est déguelasse. De plus en général lorsque tu crées un script il n'est généralement pas stand-alone. Donc ma contrib a son sens.
Même si au départ c'est lourd à gérer, cela donne une habitude structuration importante qui permet de s'y retrouver dès que cela devient complexe.
 
Je me souviens de mon premier site : je n'ai pas envie d'y remettre le nez à cause d'un manque évident de structure ... :\


Ok, c'est un point vu intéressent, je viens de le placer en dans le topic #12 et merci pour le lien concernant les dates elle complète bien ce qu'il y a de présent actuellement. :)

mood
Publicité
Posté le 08-02-2005 à 23:45:17  profilanswer
 

n°977114
T509
$job-&gt;GetJob(now)
Posté le 09-02-2005 à 23:01:25  profilanswer
 

:sol:


Message édité par T509 le 09-02-2005 à 23:02:14
n°977195
cerel
Posté le 10-02-2005 à 02:13:19  profilanswer
 

berceker united a écrit :


[...]

  • - 3 Chaine de caractère, concaténation avec variable.

-  [:papy] Je vois beaucoup de jeune corbak faire n'importe quoi avec les chaines de caractere. Voici ce qui me fait défriser les poils.

Code :
  1. $test = "vous êtes les $nombre à me poser la même question"; // n'importe quoi!...


[:psywalk]  pitié quand je vois cela !...
 
Il faut faire ceci  :jap:  

Code :
  1. $test = "vous êtes les ".$nombre." à me poser de bonne question";


 
Mais pourquoi ? :??: , Simplement parce une chaine est une chaine faut pas mélanger les pommes de terres avec les carrotes :non:. De plus c'est une mauvaise habitude car si vous voulez placer un tableau, une fonction vous allez avoir une erreur.

Code :
  1. $test = "Vous êtes ".$nombre['on']." à bien comprendre le principe";
  2. //ou
  3. $test = "Vous êtes ".Nombre()." à bien comprendre";


[...]


 
Je suis d'accord avec toi, d'ailleurs lorsque l'on utilise des simples quotes au lieu de doubles, cela "oblige" a faire la separation entre "chaine de chars" et "variables".
Je tiens neanmoins a nuancer ton propos. Il existe des moyens pour pouvoir utiliser un tableau (indice ou associatif) dans une string avec doubles quotes.
Faut faire comme cela :

Code :
  1. echo "Vous êtes $nombre[on] à bien comprendre le principe.";
  2. echo "Vous êtes {$nombre['on']} à bien comprendre le principe.";


 
Le premier exemple est plutot une "exception". En effet si l'on regarde la façon d'utiliser un tableau associatif il faudrait ecrire "$nombre['on']", mais cela pose probleme lorsque l'on veut l'utiliser dans un string avec doubles quotes. C'est pour cela que cette exception existe, et qui permet d'utiliser un tableau associatif a l'interieur d'une string a doubles quotes sans devoir metre la "cle" entre quotes (simples ou doubles).
 
Le deuxième exemple montrent l'utilisation de { }. Ici aussi cette utilisation est "particuliere". En effet, les { } ne font pas parties des characteres que l'on peut echaper (utilisation de \). Par consequent php va les afficher tels quels sauf si { est imediatement suivi par $ (qui lui peut etre echape si besoin est). Dans ce cas ci, il est alors possible d'utiliser un tableau associatif de la bonne facon (metre le cle entre quotes).  
 
L'utilisation de {$ } permet egalement quelquechose qui aurait necessite de decouper la string en deux.
Exemple :

Code :
  1. $biere = "Heineken";
  2. echo "Il a vu quelques $bieres"; // Ne vas pas fonctionner, car la var $bieres n'ex pas.
  3. echo "Il a vu quelques $biere"."s"; // Fonctionne, mais on a decoupe la string.
  4. echo "Il a vu quelques {$biere}s"; // Fontionne sans decoupage de string.


 
Pour plus de details :
http://www.php.net/manual/en/langu [...] ng.parsing
 
Voila, c'etait juste pour apporter une precision. Il est possible d'utiliser des tableaux dans une string avec doubles quotes.
Neanmoins, je recommande la séparation entre les chaines de charactères et les variables, cela facilitera la lecture avec un editeur faisant de la coloration syntaxique.
(L'utilisation des ' au lieu des " est aussi une bonne pratique car cela "oblige" a faire la separation entre les deux.)


Message édité par cerel le 10-02-2005 à 02:15:32
n°977200
cerel
Posté le 10-02-2005 à 05:15:42  profilanswer
 

Bon je me lance et je fais moi aussi une petite contrib.
 

Citation :

Comment faire pour qu'une fonction retourne plus qu'une variable ?
C'est facile (enfin quand on connais le truc :D). Suffit juste de tricher un peu.
Admetons que l'on ai besoin d'une fonction qui retourne 2 valeurs. Voila comment on va construire notre fonction :

Code :
  1. function mafonction($param) {
  2.   $val1 = $param*$param;
  3.   $val2 = $val1*$param;
  4.   return Array(0 => $val1, 1 => $val2);
  5. }


"Ca reponds pas a la question" me dirons certains, mais je leur dirais "j'ai pas fini" :D.
Voila comment utiliser cette fonction :

Code :
  1. $param=3;
  2. list($val1, $val2) = mafonction($param);


 
Et voila, grace a list() nous avons reussi a creer "une fonction qui retourne deux valeurs". Bon, ok, j'ai un peu triche, mais si vous les criez pas sur les toits personne ne le saura :D.
Plus d'infos sur list()


 
Certes, certains me diront que l'utilite est encore a demontrer, car on peut tres bien retourner un tableau associatif ou encore un objet. Mais bon, ca fait partie des trucs qui peuvent etre utiles dans certaines situations.
list() sert surtout a l'affectation de plusieurs variables en meme temps.
 
J'ai d'ailleurs trouve ca dans les commentaires du manuel de php.

jeronimo a écrit a écrit :

If you want to swap values between variables without using an intermediary, try using the list() and array() language constructs. For instance:

Code :
  1. <?
  2. // Initial values.
  3. $biggest = 1;
  4. $smallest = 10;
  5. // Instead of using a temporary variable...
  6. $temp = $biggest;
  7. $biggest = $smallest;
  8. $smallest = $temp;
  9. // ...Just swap the values.
  10. list($biggest, $smallest) = array($smallest, $biggest);
  11. ?>





Message édité par cerel le 10-02-2005 à 05:22:24
n°977206
skeye
Posté le 10-02-2005 à 07:49:00  profilanswer
 

Tiens, je connaissais pas list()...ça pourrait me servir, merci! :jap:


Message édité par skeye le 10-02-2005 à 07:49:10

---------------
Can't buy what I want because it's free -
n°977294
giHefca
occupé à ne rien faire
Posté le 10-02-2005 à 09:52:20  profilanswer
 

Petite question concernant le listage des répertoires :

Code :
  1. echo ( '<a href="' . $fichier . '"><img src="' . $fichier . '" border="0"></a> ' . $fichier ) ;


 
Pourquoi le $fichier entre les balises <a et <img affiche l'url du fichier (http://host/chemain/fichier.ext) et le $fichier seul affiche seulement fichier.ext ?

n°977297
skeye
Posté le 10-02-2005 à 09:54:08  profilanswer
 

gihefca a écrit :

Petite question concernant le listage des répertoires :

Code :
  1. echo ( '<a href="' . $fichier . '"><img src="' . $fichier . '" border="0"></a> ' . $fichier ) ;


 
Pourquoi le $fichier entre les balises <a et <img affiche l'url du fichier (http://host/chemain/fichier.ext) et le $fichier seul affiche seulement fichier.ext ?


Interprétation du navigateur. Il ajoute le reste de l'url automatiquement lorsque tu mets un chemin relatif dans ton lien.


---------------
Can't buy what I want because it's free -
n°1029500
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 11:04:42  profilanswer
 

20 -  [:negueu] oueche papy ! comment ont fait des vignettes à partir d'une image source?
 
 - [:papy] Ecoute petit morbac c'est dans ta face que je vais te mettre une vignete et je vais t'expliquer comment je vais te le mettre.
 
Voici deux fonctions que j'ai faite (du moin le deuxieme).

Code :
  1. //imgname : chemin de l'image source
  2. function loadjpeg($imgname) {
  3.   $im = imagecreatefromjpeg($imgname); /* Tentative d'ouverture */
  4.   if (!$im) { /* Vérification */
  5.     $im = imagecreate(150, 30); /* Création d'une image blanche */
  6.     $bgc = imagecolorallocate($im, 255, 255, 255);
  7.     $tc  = imagecolorallocate($im, 0, 0, 0);
  8.     imagefilledrectangle($im, 0, 0, 150, 30, $bgc);
  9. // Affichage d'un message d'erreur
  10.     imagestring($im, 1, 5, 5, "Erreur de chargement de l'image ".$imgname, $tc);
  11.   }
  12.   return $im;
  13. }
  14. //$imgSrcName : Chemin de l'image source.
  15. //$imgDstName : Chemin de l'image reduit.
  16. //$largeurMax : Largeur maximum de la vignette que ça soit en paysage ou portrait.
  17. //Retourne rien a part un true.
  18. function setVignette($imgSrcName,$imgDstName,$largeurMax){
  19.   $rsImageDst = null;
  20.   $rsImageSrc = null;
  21.   $arrTaille  = array();
  22.   $width      = 0;   //Largeur de l'image source.
  23.   $height     = 0;   //Hauteur de l'image source.
  24.   $rapport    = 0;   //Rapport entre la largeur et la hauteur.
  25.   $WidthDst   = 0;   //Largeur de la miniature.
  26.   $HeightDst  = 0;   //Hauteur de la miniature.
  27.   //Test sir l'image source existe.
  28.   if($imgSrcName !='')if(!file_exists($imgSrcName))return false;
  29.   //Charge l'image source
  30.   $rsImageSrc = loadjpeg($imgSrcName);
  31.   //Récupère la dimension
  32.   $arrTaille  = getimagesize($imgSrcName);
  33.   $width   = $arrTaille[0]; //Largeur
  34.   $height  = $arrTaille[1]; //Hauteur
  35.   $rapport = $width/$height;  //Calcule du rapport.
  36.   $WidthDst  =($width>$largeurMax)?$largeurMax:$width;
  37.   $HeightDst =($width>$largeurMax)?round($largeurMax/$rapport,0):$height;
  38.   //Création d'une image vide en mode vrai couleur.
  39.   $rsImageDst = imagecreatetruecolor($WidthDst  ,$HeightDst);
  40.   //Redimensionne l'image
  41.   imagecopyresampled($rsImageDst, $rsImageSrc  ,0 ,0 ,0 ,0 ,$WidthDst ,$HeightDst ,$width , $height);
  42.   //force en jpeg
  43.   imagejpeg($rsImageDst,$imgDstName);
  44.   //Destruction de la ressource
  45.   imagedestroy($rsImageDst);
  46.   unset($rsImageDst, $rsImageDst, $arrTaille, $width, $height, $rapport, $WidthDst, $HeightDst, $largeurMax, $imageName);
  47.   return true;
  48. }


Il est bien utile de l'utiliser avec la fonction de parcour de répertoire pour faire des redimensionnements à la volé.

n°1029511
Gilbert Go​sseyn
Dr Liara T'Soni
Posté le 30-03-2005 à 11:13:55  profilanswer
 

[:blueflag] (topic utile)


---------------
Tant que la couleur de la peau sera plus importante que celle des yeux, nous ne connaitrons pas la paix. ● L'écriture, c'est la mémoire du futur. ● Mods FO4
n°1029520
Berceker U​nited
PSN : berceker_united
Posté le 30-03-2005 à 11:30:17  profilanswer
 

21 - [:ciler] Comment faire un mail avec plusieurs piece jointe.
Sur le net il y a beaucoup de script pour envoyer un mail avec une piece jointe mais lorsqu'il y a plusieurs pièces à envoyer il y a quasi plus personne. Quand je me suis penché sur ce problème j'avous que cela n'a pas été simple. donc je vous donne le script que j'ai fais. S'il fonctionne pas c'est parce que j'ai du retirer des choses inutiles.
bon courage. Pour qu'il fonctionne il faut créer un répertoire /tmpimg/

Code :
  1. //PREMIER FICHIER.
  2. <? $nbFile = 3; ?>
  3. <html>
  4. <body>
  5. <form action="mail.php" method="POST" enctype="multipart/form-data" name="formulaire">
  6.    <br><br>
  7.    <table style="border:1px solid #000000" align="center">
  8.      <tr>
  9.        <td colspan="2" class="en-tete">Envoyer vos informations concernant le produit</td>
  10.      </tr>
  11.      <tr>
  12.        <td colspan="2">
  13.          <textarea name="message"></textarea>
  14.        </td>
  15.      </tr>
  16. <? for($i=0;$i<$nbFile;$i++){ ?>
  17.      <tr>
  18.        <td>Fichier image <? echo $i+1; ?> :</td>
  19.        <td><input type="file" name="fichier<? echo $i; ?>" value="">
  20.      </tr>
  21. <? } ?>
  22.      <tr>
  23.        <td align="center" colspan="2"><input type="submit" name="action" value="Envoyer"></td>
  24.      </tr>
  25.    </table>
  26.    <input type="hidden" name="nbfile" value="<? echo $nbFile; ?>">
  27. </form>
  28. </body>
  29. </html>
  30. //FICHIER MAIL.
  31. //$filename : chemin du fichier.
  32. function get_extension($filename){
  33.    $parts = explode('.',$filename);
  34.    $last = count($parts) - 1;
  35.    $ext = $parts[$last];
  36.    return $ext;
  37. }
  38. if($_SERVER['REQUEST_METHOD'] == 'POST'){  //Détecte si c'est le post provient d'un POST.
  39.   $isConform        = false;
  40.   $attachment       = array();
  41.   $arrNameFile      = array();
  42.   $arrSource        = array();
  43.   $arrExtension     = array();
  44.   $arrType          = array();
  45.   $arrInfoManu      = array();
  46.   $arrExtensionCTRL = array('jpg','jpeg','bmp','psd','png','gif','tif','tiff');
  47.   $boundary = "-----=".md5(uniqid(rand()));
  48.   $extensionTemp    = '';
  49.   $file             = '';
  50.   $attachment       = '';
  51.   $destinataire     = 'mail destinataire';
  52.   $from             = 'votre mail';
  53.   $reponse          = 'votre mail réponse';
  54.   $sujet            = 'Votre sujet';
  55.   $repertoire       = 'tmpimg'; //Répertoire ou ce trouverons les fichiers attachées.
  56.   $fp               = null;
  57.   $type             = 'text/plain';
  58.   $message          = trim($_POST['message']);
  59.   if($_POST['action'] == 'Envoyer'){
  60.     for($i=0;$i<$_POST['nbfile'];$i++){ //Boucle sur le nombre de champs de type file
  61.       $extensionTemp = get_extension($_FILES['fichier'.$i]['name']); // Récupère l'extension du fichier
  62.       if($_FILES['fichier'.$i]['name'] != ''){  //Détecte si il y a eu un fichier d'envoyé.
  63.         if(in_array(strtolower($extensionTemp), $arrExtensionCTRL)){ //Regarde si l'extension est valide.
  64.           $arrNameFile[$i] = $_FILES['fichier'.$i]['name'];  //Nom du fichier
  65.           $arrSource[$i]   = $_FILES['fichier'.$i]['tmp_name']; //Fichier temporaire :: contenu.
  66.           $isConform = true//Il est donc conforme.
  67.         }else{
  68.           $isConform = false; //Il n'est pas conforme
  69.         }
  70.       }
  71.     }
  72.   }
  73.   //Redirection dans le cas ou il y a une extension non valide.
  74.   if($isConform == false){
  75.     header('Location:page_erreur.php?erreur=true');
  76.     exit();
  77.   }
  78.   //Boucle sur le nombre de fichier valide.
  79.   for($i=0;$i<count($arrNameFile);$i++){
  80.     copy($arrSource[$i], $repertoire.'/'.$arrNameFile[$i]); //Copie le fichier dans une zone précise du disque
  81.     $arrExtension[$i] = strtolower(get_extension($arrNameFile[$i])); //récupère l'extension
  82.     if($arrExtension[$i] == 'gif')                                     $arrType[$i] = 'image/gif';  //gif
  83.     else if($arrExtension[$i] == 'bmp')                                $arrType[$i] = 'image/bmp';  //bmp
  84.     else if($arrExtension[$i] == 'png')                                $arrType[$i] = 'image/png';  //png
  85.     else if($arrExtension[$i] == 'psd')                                $arrType[$i] = 'image/psd';  //psd
  86.     else if($arrExtension[$i] == 'jpg' || $arrExtension[$i] == 'jpeg') $arrType[$i] = 'image/jpeg'; //jpg
  87.     else if($arrExtension[$i] == 'tif' || $arrExtension[$i] == 'tiff')  $arrType[$i] = 'image/tiff'; //tif
  88.   }
  89. //----------------------------------
  90. // Construction de l'entête
  91. //----------------------------------
  92.   $header = "MIME-Version: 1.0\r\n";
  93.   $header .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n";
  94.   $header .= "\r\n";
  95.   $msg = "Je vous informe que ceci est un message au format MIME 1.0.\r\n";
  96.   $msg .= "--$boundary\r\n";
  97.   $msg .= "Content-Type: $type; charset=\"iso-8859-1\"\r\n";
  98.   $msg .= "Content-Transfer-Encoding:8bit\r\n";
  99.   $msg .= "\r\n";
  100.   $msg .="===================VOTRE MESSAGE===================\r\n\r\n";
  101.   $msg .= $message;
  102.   $msg .= "\r\n";
  103.   for($i=0;$i<count($arrNameFile);$i++){
  104.     $file = $repertoire.'/'.$arrNameFile[$i];
  105.     $fp = fopen($file, 'rb');
  106.     $attachment = fread($fp, filesize($file));
  107.     fclose($fp);
  108.     $attachment = chunk_split(base64_encode($attachment));
  109.     $msg .= "--$boundary\r\n";
  110.     $msg .= "Content-Type: ".$arrType[$i]."; \r";
  111.     $msg .= "name=\"".$arrNameFile[$i]."\"\r\n";
  112.     $msg .= "Content-Transfer-Encoding: base64\r\n";
  113.     $msg .= "Content-Disposition: inline;\r\n filename=\"".$arrNameFile[$i]."\"\r\n";
  114.     $msg .= $attachment . "\r\n";
  115.     $msg .= "\r\n";
  116.     $msg .= "\r\n\r\n";
  117.     unlink($file);
  118.   }
  119.   $msg .= "--$boundary--\r\n";
  120.   if(mail($destinataire, $sujet , $msg,"Reply-to: $reponse\r\nFrom: $from\r\n".$header)){
  121.     echo "OK";
  122.   }else{
  123.     echo "ERREUR";
  124.   }
  125. }
  126. ?>


J'espere qu'avec ceci ca va aider certain d'entre vous.


Message édité par Berceker United le 19-05-2005 à 13:38:50
n°1089092
Berceker U​nited
PSN : berceker_united
Posté le 19-05-2005 à 13:38:25  profilanswer
 

Qu'est ce qu'il se passe tous le monde est devenu bon :D ?.
Pour ceux qui ont des actuces n'hésité pas a faire une contribution ici ! ;)


Message édité par Berceker United le 19-05-2005 à 13:39:52
n°1095334
mixed
SuckMine
Posté le 24-05-2005 à 17:30:24  profilanswer
 

Salut !
 
Déjà félicitations pour le topic, tres instructif et bien pensé (un c/c sauvage ca risque pas de marcher).
 
Et voila, je me sers actuellement des sessions un peu à la va que j'te pousse, et j'aimerais avoir un aperçu de fonctions du (session_set_save_handler).
En fait je voudrais un exemple d'enregistrement en base de données, j'ai rien trouvé de leger et comprehensible pour un n00b, a par des scripts tout faits qui ne correspondent pas à ce que je cherche.
 
Donc si quelqu'un s'y connait en sauvegarde de données de session en base de données (MySQL) !


Message édité par mixed le 24-05-2005 à 17:31:06
n°1095388
Berceker U​nited
PSN : berceker_united
Posté le 24-05-2005 à 18:03:04  profilanswer
 

mixed a écrit :

Salut !
 
Déjà félicitations pour le topic, tres instructif et bien pensé (un c/c sauvage ca risque pas de marcher).
 
Et voila, je me sers actuellement des sessions un peu à la va que j'te pousse, et j'aimerais avoir un aperçu de fonctions du (session_set_save_handler).
En fait je voudrais un exemple d'enregistrement en base de données, j'ai rien trouvé de leger et comprehensible pour un n00b, a par des scripts tout faits qui ne correspondent pas à ce que je cherche.
 
Donc si quelqu'un s'y connait en sauvegarde de données de session en base de données (MySQL) !


Je sais que lorsque des outils assez lourd était developpé en php3 il y avait une gestion de session en base quasi obligatoirement car en php3 les sessions n'étais pas fiable. La derniere fois que j'ai vu cette gestion c'étais sur un application qui s'appelais "osCommerce". j'ai travaillé dessus il y a pas longtemps. regarde un peut comment ça marche je pense que tu auras la réponse à ta question. Au pire, commence un peut dessus et si tu as des soucis n'hesite pas à demander nous serons prendre la suite à ce moment là.  [:papy]

n°1095429
Puissance ​Athlon XP
Posté le 24-05-2005 à 18:36:32  profilanswer
 

http://www.zend.com/zend/spotlight [...] c=0&view=1
 
(J'ai pas encore lu mais ça pourrait ptet convenir)

n°1097729
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 11:07:20  profilanswer
 

22 - Php IV ou PHP V ?
-Bonne question p'tit corniaud, [:papy]. Aujourd'hui, php5 est sorti et apporte beaucoup de nouveauté par rapport à la version 4  mais maintenant se pose la question à savoir si je developpe avec les spécificités de php 5 ou pas. Tous dabord il faut connaitre les principales différence entre ces deux versions. Le 5 apporte beaucoup d'amélioration sur le coté objet, le XML, sur les services web et intègre SQLite. Il y a pas photo, php5 c'est bien ;) mais il faut se poser la question suivante :  
- Est ce que mon site va être chez un hébergeur, si oui il faut trouver un hebergeur qui accepte le php5, à l'heure actuelle la migration se fait lentement mais va finir par arriver. Se fut pareil pour passer du 3 au 4, d'après mes souvenir [:chewyy] php4 est sorti fin 2000 et les hebergeurs ont migré entre le milieu et la fin 2001 malgré cela il y avait encore des hebergeurs (gratuit) en php3 et qu'il le sont encore.
FAQ :
- Est-ce que sa vaut le coût d'apprendre directement php5 ?
  ppff  :sarcastic:  ben oui qui peut le plus peut le moin (en parlant de php4)
- Concretement qu'est ce qu'il apporte de plus le 5
  Une meilleur gestion de l'objet ce qui fait que la maintenance, la clareté d'un site se trouve accrut.
  le faite qu'il embarque SQLite.
- Est ce que php5 est payant ?
  Oui php par rapport au 4 est payant (venez me voir en mp pour discuter du prix et a qui l'envoyer ;)).
 
 
site qui explique bien mieu que moi :D
http://www.atelierphp5.com/latelie [...] -php5.html

n°1097790
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 11:38:42  profilanswer
 

23 - Faire une page de connexion sécurisé.
80% des sites ayant une page de connexion ou il y a demande de login et mot de passe sont très souvent pas sécurisé. Pourquoi ? car souvent elles font appelle a une requette a la base de données et c'est la que se trouve le risque.
Voici dans la plupart des cas c'est fait ?
 

Code :
  1. $req= "SELECT COUNT(*) FROM utilisateur WHERE login = '".$_POST['login']."' AND password='".$_POST['password']."';


 :sarcastic: Mais c'est ce que je fais pourtant sa marche bien !...
  :non: Non car une personne avec l'esprit fourbe [:alldream] peut modifier ta requette car via le champ de formulaire tu le donne acces à la syntaxe SQL.
Je vais pas dire comment mais il faut reflechir deux secondes et vous comprendrez mais voici comment ont peut au moin éviter de se faire avoir par cela.
 

Code :
  1. <?
  2. session_start();
  3. $rssConn = mysql_connect('mon_serveur','mon_login','mon_pass');
  4. mysql_select_db('ma_base',$rssConn);
  5. $rs = null;
  6. $data = array();
  7. $isIdentifie = false;
  8. $idUtilisateur = null;
  9. $req = "SELECT login, password,idutilisateur FROM utilisateur";
  10. $rs = mysql_unbuffered_query($req,$rssConn);
  11. while($data = mysql_fetch_row($rs)){
  12. $arrOut['login'][$i] = $data[0]; //login
  13. $arrOut['password'][$i] = $data[1]; //password
  14. $arrOut['id'][$i] = $data[2];//idutilisateur
  15. $i++;
  16. }
  17. mysql_free_result($rs); //je libere le recordset de la memoire
  18. //Je compare avec ce qu'il y a dans le tableau de resultat.
  19. for($i=0;$i<count($arrOut);$i++){
  20. if($arrOut['login'][$i] == $_POST['login'] && $arrOut['password'][$i] == $_POST['password']){
  21.  $isIdentifie = true;
  22.  $idUtilisateur = $arrOut['id'][$i];//Récupére l'id de l'utilisateur identifié
  23. }
  24. }
  25. if($isIdentifie===true){
  26. $_SESSION['idutilisateur'] = $idUtilisateur;
  27. header('Location:jesuisidentifie.php');
  28. exit();
  29. }else{
  30. header('Location:erreur.php');
  31. exit();
  32. }
  33. mysql_close($rssConn);
  34. ?>


Message édité par Berceker United le 26-05-2005 à 11:39:20
n°1097873
ratibus
Posté le 26-05-2005 à 12:40:00  profilanswer
 

Chase a écrit :

Lire tous les enregistrements de la base pour un login, c'est vraiment affreux :lol:
 
Je conseillerais de faire comme les 80% et de sécuriser $_POST['login'] et $_POST['pass'] avec addslashes ou mysql_real_escape_string :ange:

+1 :)

n°1097883
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 12:52:18  profilanswer
 

alors c'est que connaissais pas le moyen de contourner le addslashes.
il y a la possibilité de mettre le password en md5.


Message édité par Berceker United le 26-05-2005 à 12:53:09
n°1097902
ratibus
Posté le 26-05-2005 à 13:03:11  profilanswer
 

Je serais curieux de voir comme tu fais une injection SQL avec des addslashes() ;)

n°1097919
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 26-05-2005 à 13:13:12  profilanswer
 

Tiens, ma petite contribution pour alléger la procédure de la première page pour lire "bêtement" toutes les jpgs d'un répertoire.
 

Code :
  1. $monrepertoire='images/*.jpg';
  2. foreach (glob($monrepertoire) as $mesfichiers)
  3. {  echo $mesfichiers.'<br />'; }


Message édité par The-Shadow le 26-05-2005 à 13:14:13
n°1097922
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 13:14:06  profilanswer
 

Pendant le cour de java le prof nous a montré cela sous les yeux, j'étais comme toi je pensais pas que c'étais possible de contourner mysql_real_escape_string et addslashes mais pourtant il nous l'a montré sous les yeux, le code a été fait par un élève pour bien nous montrer que c'est pas un mensonge. au final il y a reussi a faire passer un bout de syntaxe sql. Il c'est basé sur le code ascii et ansi mais faut bien connaitre ces deux jeux de caractère, apres tu fais faire a mysql_real_escape_string  ou addslaches la syntaxe sql. C'est pas à la porté de tous le monde mais quand tu vois faire cela sous les yeux tu te dit pas
"hooo pauvre petite base de données je t'ais fais récupérer tous les login et password de ta table, je suis sincerement désolé :("

n°1097933
ratibus
Posté le 26-05-2005 à 13:31:09  profilanswer
 

Berceker United a écrit :

Pendant le cour de java le prof nous a montré cela sous les yeux, j'étais comme toi je pensais pas que c'étais possible de contourner mysql_real_escape_string et addslashes mais pourtant il nous l'a montré sous les yeux, le code a été fait par un élève pour bien nous montrer que c'est pas un mensonge. au final il y a reussi a faire passer un bout de syntaxe sql. Il c'est basé sur le code ascii et ansi mais faut bien connaitre ces deux jeux de caractère, apres tu fais faire a mysql_real_escape_string  ou addslaches la syntaxe sql. C'est pas à la porté de tous le monde mais quand tu vois faire cela sous les yeux tu te dit pas
"hooo pauvre petite base de données je t'ais fais récupérer tous les login et password de ta table, je suis sincerement désolé :("

Tu pourrais m'envoyer le code en question en MP ?

n°1097951
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 13:44:49  profilanswer
 

ratibus a écrit :

Tu pourrais m'envoyer le code en question en MP ?


ça date de l'année dernière j'ai pas gardé cela de plus c'étais pas sous nos machine mais celle du prof.
La seul chose dont je me rappelle c'est qu'il bouclait sur la table ascii et ansi et regardais a chaque fois le resultat de retour que ça faisait avec addslashes et mysql_escape ...  pour voir pouvoir déjouer. au finale il a fait un function qui permettait de convertir directement les caracteres qui risquais de passer a la trape via ces deux fonction.  Si je recontacte mon ancien prof il voudra pas me donner la solution, c'est compréhensible.
Je comprend que cela puisse choquer certain surtout s'il a y a une centaine de millier d'utilisateur. Dans ce cas il est largement préférable d'utiliser le MD5.

n°1097956
cesarr89
Posté le 26-05-2005 à 13:50:37  profilanswer
 

Berceker United a écrit :

ça date de l'année dernière j'ai pas gardé cela de plus c'étais pas sous nos machine mais celle du prof.
La seul chose dont je me rappelle c'est qu'il bouclait sur la table ascii et ansi et regardais a chaque fois le resultat de retour que ça faisait avec addslashes et mysql_escape ...  pour voir pouvoir déjouer. au finale il a fait un function qui permettait de convertir directement les caracteres qui risquais de passer a la trape via ces deux fonction.  Si je recontacte mon ancien prof il voudra pas me donner la solution, c'est compréhensible.
Je comprend que cela puisse choquer certain surtout s'il a y a une centaine de millier d'utilisateur. Dans ce cas il est largement préférable d'utiliser le MD5.


 
C'est pareil avec le select, imagine si tu as  rien que 200 ou 300 utilisateurs qui se connectent en même temps au site, chacun va faire un select qui va retourner des miliers de tuples de 3 champs.

n°1097981
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 14:03:45  profilanswer
 

Il y a un autre moyen mais que php ne gère pas (Je suis en train de faire un script pour cela). Mettre en session pour tous les utilisateurs un objet et au lieu de taper dans la base il va chercher dans un objet partagé par tous. Mais php ne fait pas de session partagé, jsp et peut être d'autre le font. Je vais justement faire un script qui permettra de le faire.

n°1097997
cesarr89
Posté le 26-05-2005 à 14:11:57  profilanswer
 

Ouai avec les servlets tu peux le faire
 
Edit: d'ailleurs je me suis casser le...avec ca


Message édité par cesarr89 le 26-05-2005 à 14:12:24
n°1098012
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 14:15:17  profilanswer
 

cesarr89 a écrit :

Ouai avec les servlets tu peux le faire
 
Edit: d'ailleurs je me suis casser le...avec ca


C'est dommage que php ne puisse pas gérer cela car c'est très utile mais c'est pas grave vu que je vais faire en sorte que cela puisse être utilse le seul souci majeur c'est la sécurité car il faut faire en sorte que l'information ne puisse pas être lu ou exploité.
PS : J'aurais bientot besoin de testeur pour voir la fiablité de mon truc ;) donc avis au amateur!


Message édité par Berceker United le 26-05-2005 à 14:16:16
n°1098025
cesarr89
Posté le 26-05-2005 à 14:19:47  profilanswer
 

Oué si tu veux

n°1098028
FlorentG
Posté le 26-05-2005 à 14:20:15  profilanswer
 

Berceker United a écrit :

ça date de l'année dernière j'ai pas gardé cela de plus c'étais pas sous nos machine mais celle du prof.
La seul chose dont je me rappelle c'est qu'il bouclait sur la table ascii et ansi et regardais a chaque fois le resultat de retour que ça faisait avec addslashes et mysql_escape ...  pour voir pouvoir déjouer. au finale il a fait un function qui permettait de convertir directement les caracteres qui risquais de passer a la trape via ces deux fonction.  Si je recontacte mon ancien prof il voudra pas me donner la solution, c'est compréhensible.
Je comprend que cela puisse choquer certain surtout s'il a y a une centaine de millier d'utilisateur. Dans ce cas il est largement préférable d'utiliser le MD5.


Des caractères qui passent à la trappe ? [:johneh]

n°1098169
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 14:55:39  profilanswer
 

FlorentG a écrit :

Des caractères qui passent à la trappe ? [:johneh]


T'inquiete pas sa fait toujours ça la premiere fois. :D
Dit toi que lorsque nous avons vu cela dans la classe il y avait [:johneh] x 18.
 
PS :cesarr89 des que j'ai terminé je te le fais savoir , merci ;)


Message édité par Berceker United le 26-05-2005 à 14:56:14
n°1098203
FlorentG
Posté le 26-05-2005 à 15:09:33  profilanswer
 

Mais comment ça qui passent à la trappe ?

n°1098214
Berceker U​nited
PSN : berceker_united
Posté le 26-05-2005 à 15:17:24  profilanswer
 

FlorentG a écrit :

Mais comment ça qui passent à la trappe ?


Non en faite j'aurais pas du utiliser ce mot car il ne passe pas à la trappe mais en faite les caracteres particuliers peuvent passer d'une autre maniere au nez et à la barbe des fonctions qui sont censé l'intercepter. Mais bon il faut pas psychoter c'est quand même baleze, le prof a mis une journée et demie pour pondre le code et fait tomber 2 fois le serveur :). En prenant en compte que c'etais un responsable de la sécurité dans des grosses boite notament edf et sncf donc c'est pas un kéké :/!

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  6  7  8  9  10  11  12

Aller à :
Ajouter une réponse
 

Sujets relatifs
controles des champ et correction du formulaire PHP[PHP]Récupèrer une ressource d'un autre site et l'exploiter
Php et Html[HTML/PHP] Réaliser une message box
jpgraph et phpCode source d'un fichier PHP
Pervasive SQL et php[PROB] PHP debutant - Retour a la ligne
page précédente en phpRSS et PHP
Plus de sujets relatifs à : Tuto des scripts PHP les plus demandés et des astuces.


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)