Langage PHP
<?php // debut du php
.
.
?> // fin du php
Alerte en PHP
echo '<script>alert("Code erronné !!!") </script>';
avec qui étant 1 variable
ex. qui = "toto";
echo '<script>alert("Bonjour " + qui) </script>';
Commentaires
// pour 1 ligne
/*
plusieurs lignes
*/
Cryptogramme dans une page (CaptChas)
Copier les lignes suivantes en tout début de la page qui contiendra le
cryptogramme. Ces lignes doivent être vraiment placées au debut, avant toute
balise.
<?php
$cryptinstall="./crypt/cryptographp.fct.php";
include $cryptinstall;
?>
***********************************************************************************************************************
Pour afficher le cryptogramme, copier le code suivant dans votre page, à
l'endroit où vous désirez l'affichage:
<?php dsp_crypt(0,1); ?>
***********************************************************************************************************************
Formulaire de saisie
Le principe est toujours le même: le code saisi par l'utilisateur est passé à la
page de vérification en même temps que toutes les autres zones de saisie du
formulaire.
Dans l'exemple ci-dessous, pour simplifier, je n'ai laissé que le cryptogramme
et la zone de saisie. Dans cet exemple, la page de vérification qui recevra le
formulaire s'appelle verifier.php.
Il faut bien entendu adapter cet exemple à votre script. Il ne faut pas recreer
un formulaire mais utiliser le formulaire que vous avez déjà en incluant le
cryptogramme et la zone de saisie à l'intérieur. Dans cet exemple la zone de
saisie s'appelle code mais il est possible de la nommer autrement.
<form action="verifier.php" method="post">
<table>
<tr><td><?php dsp_crypt(0,1); ?></td></tr>
<tr><td>Recopier le code:<input type="text" name="code"></td></tr>
<tr><td><input type="submit" name="submit" value="Envoyer"></td></tr>
</table>
</form>
***********************************************************************************************************************
Vérification
La page de vérification (verifier.php dans l'exemple ci-dessus) récupère la
valeur de la zone saisie (code dans l'exemple ci-dessus).
Comme pour la page du formulaire, la page de vérification doit commencer (avant
toute balise) par les lignes suivantes :
<?php
$cryptinstall="./crypt/cryptographp.fct.php";
include $cryptinstall;
?>
***********************************************************************************************************************
La portion de code qui vérifie l'exactitude de la saisie a été simplifiée par
rapport aux versions précédentes de Cryptographp. La fonction chk_crypt renvoie
la valeur true (vraie) si le code saisi et correct et False (faux) dans le cas
contraire.
<?php
if (chk_crypt($_POST['code']))
echo "Bravo";
else echo "Erreur";
?>
Chaînes de caractères
Ces fonctions permettent la manipulation de chaînes de caractères. Certaines
sections plus spécialisées sont disponibles dès les sections sur les expressions
régulières et dans la section URL.
AddCSlashes — Ajoute des slashes dans une chaîne, comme en langage C.
AddSlashes — Ajoute un slash devant tous les caractères spéciaux.
bin2hex — Converti une valeur binaire en hexadécimal
Chop — Enlève les espaces de fin de chaîne.
Chr — Retourne un caractère.
chunk_split — Scinde une chaîne en plus petits morceaux.
convert_cyr_string — Converti la chaîne d’un alphabet cyrillique vers un autre.
count_chars — Retourne des informations sur les caractères utilisés dans une
chaîne.
crypt — Encrypte une chaîne avec un DES.
echo — Affiche une ou plusieurs chaînes.
explode — Scinde une chaîne en morceau, grâce à un délimiteur.
get_html_translation_table — Retourne la table de traduction utilisée par
htmlspecialchars() et htmlentities().
get_meta_tags — Extrait toutes les balises meta d’un fichier, et les retourne
sous forme d’un tableau.
htmlentities — Converti tous les caractères spéciaux en équivalent HTML.
htmlspecialchars — Converti tous les caractères spéciaux en équivalent HTML.
implode — Regroupe tous les éléments d’un tableau dans une chaîne, avec une
chaîne de jointure.
join — Regroupe tous les éléments d’un tableau dans une chaîne, avec une chaîne
de jointure.
ltrim — Enlève les espaces de début de chaîne.
md5 — Calcule un md5 avec la chaîne.
Metaphone — Calcule la clé metaphone d'une chaîne.
nl2br — Converti les nouvelles lignes en HTML (<BR?).
Ord — Retourne la valeur ASCII du caractère.
parse_str — Analyse une chaîne, et en déduit des variables et leur valeur.
print — Affiche une chaîne.
printf — Affiche une chaîne formatée.
quoted_printable_decode — Décode une chaîne
QuoteMeta — Ajoute un backslash devant tous les caractères méta
rawurldecode — Décode une chaîne URL.
rawurlencode — Encode une chaîne en URL, selon la RFC1738.
setlocale — Change les informations locales.
similar_text — Calcule la similarité de deux chaînes.
soundex — Calcule la valeur soundex d’une chaîne.
sprintf — Retourne une chaîne formatée.
strcasecmp — Comparaison binaire de chaînes, insensible à la casse.
strchr — Recherche la première occurrence d’un caractère.
strcmp — Comparaison binaire de chaînes.
strcspn — Recherche la longueur du premier segment de chaîne qui ne corresponde
pas au masque donné.
strip_tags — Enlève les balises HTML et PHP.
StripCSlashes — Déquote une chaîne quotée avec addcslashes
StripSlashes — Enlève les slash ajoutés par la fonction addslashes
stristr — strstr(), insensible à la casse.
strlen — Retourne la longueur de la chaîne.
strpos — Recherche la dernière occurrence d’un caractère dans une chaîne.
strrchr — Recherche la dernière occurrence d’un caractère dans une chaîne
str_repeat — Répéte une chaîne.
strrev — Inverse l'ordre des caractères d'une chaîne.
strrpos — Recherche la dernière occurrence d’un caractère dans une chaîne.
strspn — Retourne la longueur du premier segment qui vérifie le masque.
strstr — Trouve la première occurence d'une chaîne.
strtok — Morcelle une chaîne
strtolower — Met tous les caractères en minuscule.
strtoupper — Met tous les caractères en majuscule.
str_replace — Remplace toutes les occurrences d’une chaîne par une autre.
strtr — Remplace toutes les occurrences d’un caractère par un autre.
substr — Retourne une partie de la chaîne.
substr_replace — Remplace dans une sous partie de chaîne
trim — Enlève les espaces de fin et de fin de chaîne.
ucfirst — Force le premier caractère d’une chaîne en majuscule.
ucwords — Force le premier caractère de chaque mot d’une chaîne en majuscule
Concaténer
$nom = "Martin";
echo "bonjour ",$nom; = bonjour Martin
echo "Mon nom est $nom"; = Mon nom est Martin
echo 'Mon nom est $nom'; = Mon nom est $nom ???
echo 'Mon nom est '.$nom; = Mon nom est Martin
Cookies
<?
// Cookie ecriture
$expire = 365 * 24 * 3600; // 1 an
$contenu = "FR";
setcookie("pays_jno",$contenu,time()+$expire);
?>
<?
// Lire Cookie
echo $HTTP_COOKIE_VARS['pays_jno']; // crochets [ et ]
$toto = $HTTP_COOKIE_VARS['pays_jno'];
echo "<br><br>la reponse = ",$toto;
?>
Date et heure Calendrier
echo date('d/m/Y à H:i:s'); //Affichera la date sous cette forme : jj/mm/yyyy à
HH:mm:ss (Exemple : 01/03/2006 à 12:10:05)
JDToGregorian — Converti le nombre de jours du calendrier Julien en date
grégorienne.
GregorianToJD — Converti une date grégorienne en nombre de jours du calendrier
julien.
JDToJulian — Converti le nombre de jours du calendrier Julien en date du
calendrier Julien.
JulianToJD — Converti le nombre de jour du calendrier Julien en date du
calendrier Julien.
JDToJewish — Converti le nombre de jours du calendrier julien en date du
calendrier juif.
JewishToJD — Converti une date du calendrier juif en nombre de jours du
calendrier julien.
JDToFrench — Converti le nombre de jours du calendrier julien en date du
calendrier français républicain
FrenchToJD — Converti une date du calendrier français républicain en nombre de
jours du calendrier julien.
JDMonthName — Retourne le nom du mois.
JDDayOfWeek — Retourne le numéro du jour de la semaine.
easter_date — Retourne un timestamp UNIX pour Pâques, à minuit, pour une année
donnée.
easter_days — Retourne le nombre de jour entre le 21 Mars et Pâques, pour une
année donnée.
Dates PHP
$date = date("d-M-Y"); // 30-12-2007 jour Mois Année sur 4 chiffres avec y
(minuscule) année sur 2 chiffres
$heure = date("H:i"); // Heure Min
$heure = date("H:i:s"); // Heure Min Sec
echo "le ",$date," à ",$heure;
ou
echo ("le $date à $heure");
Si (erreur)
echo('la $date à $heure'); // Affiche le nom de variable ...
Date fichier
echo $super," Super ",date("d M Y à H:i",filemtime("../web_toto/avis.txt"));
Date avec setlocale et strftime
// -- DATE 1 --
$date = "15/10/2003";
$jour = substr($date,0,2); // on récupère le jour
$mois = substr($date,3,2); // puis le mois
$annee = substr($date,6,4); // et l'annee ...
// on transforme la date en timestamp
$timestamp = mktime(0,0,0,$mois,$jour,$annee);
// -- DATE ACTUELLE -- directement en timestamp.
$maintenant = time();
// -- CALCUL -- on calcule le nombre de secondes d'écart entre les deux dates
$ecart_secondes = $maintenant - $timestamp;
// puis on tranforme en jours (arrondi inférieur)
$ecart_jours = floor($ecart_secondes / (60*60*24));
// enfin on affiche le résultat
setlocale(LC_TIME, "fr_FR");
echo "<b>le site de Vaux en Amiènois</b><br>";
echo "Site créé le ",$date,", ",$ecart_jours," jours se sont écoulés avant ce ".strftime("%A
%d %B %Y"),".<br>";
// %A jour en lettres, %d N° du jour 1 - 31, %B Mois en lettres, %Y Année sur 4
chiffres
$ans = $ecart_jours / 365;
$ansP = floor($ans); // années entieres
echo "(",$ansP," Années";
$nb_jours = 365;
$moisP = fmod($ecart_jours,$nb_jours); // le modulo
$moisP = floor($moisP / 30);
echo " et ",$moisP," mois)<br>";
Envoi Mail
<?php
$headers = "From: \"a2Ha\"<aaha@a2ha.net>\n";
$headers .= "Reply-To: aaha@a2ha.net\n";
$headers .= "Cc: j.nourtier@free.fr, j.nourtier@tiscali.fr\n";
$headers .= "Bcc: jnourtier@j-nourtier.net\n";
$headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 8bit";
$subject = 'Essai Un site à voir absolument !';
$message = "Salut à tous, \n\n";
$message .= "Un site super à voir absolument : \n";
$message .= "http://www.phpcodeur.net\n\n";
$message .= "A demain\n\n";
$message .= "toto";
$result = mail('jocelyn.nourtier@wanadoo.fr', $subject, $message, $headers);
if( $result == true )
{
echo 'l\'email a bien été envoyé';
}
else
{
echo 'l\'email n\'a pas pu être envoyé !';
}
?>
eMail de confirmation
<?php
//Envoi mail de confirmation a l'abonné
$email_admin="jnourtier@j-nourtier.net";
$titre="Honeywell";
$adresse = "j.nourtier@free.fr";
$signature = "Joce.";
$mess="Inscription à notre newsletter pour être informé des nouveautés du
site.";
$confirmation="<b>Je vous confirme que vous avez bien été enregistré(e) à la
newsletter du site a2Ha.</b><br><br> Vous recevrez donc en priorité les
nouvelles du site.<br><br><b>Nous vous remercions de votre intérêt.<br><i>
",$signature,"</b>";
$codehtml= "<html><body>" . "$confirmation"."</body></html>";
mail("Hey $adresse, vous voilà inscrit à la Newsletter de $titre",$codehtml,"From:
$email_admin\nReply-To: $email_admin\nContent-Type: text/html; charset=\"iso-8859-1\"\n");
?>
ElseIf
<?php
if ($a > $b)
{
print "a est plus grand que b";
}
elseif ($a == b)
{
print "a est égal à b";
}
else
{
print "a est plus petit que b";
}
?>
Fonction strftime avec SetLocale
Les caractères suivants sont utilisés pour spécifier le format de la date :
Htaccess
le .htacces
le .htpassword
Le chemin réel
admin/chemin.php
mpasse.php (joce, jno1706)
Modulo
$modulo = fmod($total,$compte);
Tri en PHP
Pour ordonner les annonces de la plus récente à la plus ancienne, il suffit de
remplacer ASC LIMIT par DESC LIMIT au début du script.
<?
include ("connect.inc.php3");
$requete10=mysql($database,"SELECT * FROM `annonce` ORDER BY `datesaisie` DESC
LIMIT 0 , 11");
?>
Appel fichier extérieur
< ?php
include(« toto.inc.php ») ;
// le inc permet de bien différencier les fichiers ext pour la maintenance
Ecriture dans fichier texte
< ?php
$fp = fopen(data.txt », »r+ ») ;
ffseek($fp,0) ; // on se positionne sur la 1ère ligne du fichier
fputs($fp,$nouveau) ; // ajout de la variable nouveau
fclose($fp) ; // fermeture du fichier
?>
Lecture fichier texte (ex. data_pays.txt)
<?php
$fp = fopen("data_pays.txt","r");
$donnees = fgets($fp,255);
fclose($fp);
include ("titres_".$donnees.".php");
//echo "<br><br>";
//print "le titre : " .$titre1;
?>
Ecriture
<?php
$date = date("d M Y");
$heure = date("H:i");
$adresse = toto@titi.net";
// On alimente le fichier historiq.txt
// Historique complet des Abonnements et Désabonnements
// joce 31/12/2007
$ligne = "+ Abonnement le ".$date." à ".$heure." - ".$adresse;
if (!$fp = fopen("../historiq.txt","a"))
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
fwrite($fp,$ligne."\n");
}
fclose($fp); // On ferme le fichier
?>
Lecture
<?php
// historiq.php Lecture fichier texte
// Historique complet des Abonnements et Désabonnements
// joce 31/12/2007
$fileLines=file("historiq.txt");
$nb_listadr = count($fileLines);
echo '<b>',$nb_listadr,' lignes<br>';
echo '<b>Historique des Abonnements / Désabonnements à la liste a2Ha</b><br>';
if (!$fp = fopen("historiq.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
while(!feof($fp)) {
// On récupère une ligne
$Ligne = fgets($fp,255);
// On affiche la ligne
echo '</b><br>',$Ligne;
}
fclose($fp); // On ferme le fichier
}
?>
Fichier ext en variable
include ("titres_".$donnees.".php");
ex. appel du fichier exter titres_FR.php aprés récupération de la variable du
pays = FR dans le fichier texte associé.
Images
<img src="images/<?echo $nomimages[$affimage];?>" border=0 width=50 height=50
alt="Image aléatoire">
2 Variables
<?php echo "" .$titre_tarif. " = " . $p_reserve ;?></font><font color="#800000"><br>
Attention aux points
Majuscules / minuscules
$chaine = « Toto » ;
$maj = strtoUpper($chaine) ; --> TOTO
$min = strtoLower($chaine) ; --> toto
Rappel
<script language="JavaScript" src="<?php echo $mosConfig_live_site; ?>urldetonfichier.js"
type="text/javascript"></script>
Ce code à mettre entre la balise <head> et l'autre </head> !
en jscript
<SCRIPT language=JavaScript src="titres_FR.js"></SCRIPT>
Le code PHP data.php
(ne copier/coller pas ce code dans votre éditeur, retapez-le ou gare aux
erreurs...)
<?
$fp = fopen("data.txt","r"); //(1)
$donnees = fgets($fp,255); //(2)
fclose($fp); //(3)
//Affichage du résultat -----------
echo'Le fichier contient : '.$donnees;
?>
Le code PHP de compteur.php
(ne copier/coller pas ce code dans votre éditeur, retapez-le ou gare aux
erreurs...)
<?
$fp = fopen("compteur.txt","r+"); // 1.On ouvre le fichier en lecture/écriture
$nbvisites = fgets($fp,11); // 2.On récupère le nombre dans le fichier
$nbvisites++; // 3.On incrémente le nombre de visites(+1)
fseek($fp,0); // 4.On se place en début de fichier
fputs($fp,$nbvisites); // 5.On écrit dans le fichier le nouveau nb
fclose($fp); // 6.On ferme le fichier
print("$nbvisites visiteurs"); // 7.On affiche le compteur à l'écran
?>
Il vous suffit de placer ce code dans la page un index.php de votre site. Ici la
fonction fseek() permet de se replacer où l'on veut en l'occurrence "0" , donc
au début, ensuite avec fputs() on écrit dans le fichier à l'endroit spécifié.
Pour finir avec les fichiers, n'oubliez pas que votre fichier texte qui se
trouve sur votre FTP doit avoir avoir tous les droits (chmode 777) pour que le
script puisse y écrire.
Retour automatique sur 1 page PHP
echo '<script>
window.setTimeout("location.replace(\'../index_jno.htm\')",5000)
</script>';
Transmission variable PHP
<a href = "index.php?nom=<?=$nom;?>"></a>
dans index.php
$_GET['nom'];
Session PHP
<?
$variable = "tortue";
session_start();
session_register("variable");
?>
Lecture et récupération
<?
session_start();
echo "La variable est ".$_SESSION[variable];
....
Variables
echo '<input type="hidden" name="toto" value="'.variable.'">' A vérifier
Verif mail PHP avec 1 regex (regular expression)
function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
if(preg_match($Syntaxe,$adresse))
return true;
else
return false;
}
Après avoir récupéré le champ "adresse" d'un formulaire :
$adresse=htmlentities($_POST['adresse']);
if(VerifierAdresseMail($adresse))
echo '<p>Votre adresse est valide.</p>';
else
echo '<p>Votre adresse e-mail n\'est pas valide.</p>';
Explications
Les dièses sont les délimiteurs de la regex.
Le signe ^ indique que la chaine doit commencer par ce qui suit, et le signe $
indique qu'elle doit se terminer par ce qui précède.
\w est une classe abrégée qui correspond a A-Za-z0-9_. soit aux 26 lettres de
l'alphabet en majuscules ou minuscules, les dix chiffres et un underscore.
Ce que fait le code
^[\w.-]+@ Commence (^) par au moins un caractère correspondant à la classe
abrégée, ou un tiret, puis est suivi par un@.
[\w.-]+ un ou plus de caractères correspondant à la classe abrégée ou un tiret
(c'est le nom de domaine)
\.[a-zA-Z]{2,5}$ un point, puis deux à cinq lettres, qui finissent la chaine
(c'est la tld du nom de domaine).