Ce HOW-TO provient en grande partie de notre echange de mail avec tobozo
Il sera disponible de facon permanente et mis a jour régulierement sur le site
http://www.nexen.net/allreponse dans la section HOWTO de PHP
PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Java script ou un applet Java s'exécute sur votre ordinateur...). La syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts sont:
Le langage PHP a été mis au point au début d'automne 1994 par Rasmus Lerdorf. Ce langage de script lui permettait de conserver la trace des utilisateurs venant consulter son CV sur son site, grâce à l'accès à une base de données par l'intermédiaire de requêtes SQL. Ainsi, étant donné que de nombreux internautes lui demandèrent ce programme, Rasmus Lerdorf mit en ligne en 1995 la première version de ce programme qu'il baptisa Personal Sommaire Page Tools, puis Personal Home Page v1.0 (traduisez page personnelle version 1.0). Étant donné le succès de PHP 1.0, Rasmus Lerdorf décida d'améliorer ce langage en y intégrant des structures plus avancées telles que des boucles, des structures conditionnelles, et y intégra un package permettant d'interpréter les formulaires qu'il avait développé (FI, Form Interpreter) ainsi que le support de mSQL. C'est de cette façon que la version 2 du langage, baptisée pour l'occasion PHP/FI version 2, vit le jour durant l'été 1995. Il fut rapidement utilisé sur de nombreux sites (15000 fin 1996, puis 50000 en milieu d'année 1997). A partir de 1997, Zeev Suraski et Andi Gurmans rejoignent Rasmus pour former une équipe de programmeurs afin de mettre au point PHP 3 (Stig Bakken, Shane Caraveo et Jim Winstead les rejoindra par la suite). C'est ainsi que la version 3.0 de PHP fut disponible le 6 juin 1998. A la fin de l'année 1999, une version bêta de PHP, baptisée PHP4 est apparue...
Tout depend comment on l'utilise. Chez soi les ressources requises sont tres limitees, un simple 486 avec 64mo peut faire l'affaire. Pour plus de sollicitations, une config serveur standard peut faire l'affaire.
Je risque pas de me trouver face à un serveur UNIX ?
Les fournisseurs d'acces gratuits qui proposent php sont nombreux et heureusement pour nous, ils tournent pour la plupart sous X. Il n'y a pas besoin de savoir programmer sous unix pour faire du php, c'est la meme manip que pour du html, c'est le code qui change c'est tout ...
Nexen est le meilleur de tous les hébergeurs. Il tourne sur mysql et php4 (ca arrache)
Par contre faut pas y mettre des trucs illégaux car l'administrateur surveille de près...
Pour télécharger la version 4 cliquez ----------------) ici
La version 4 en est deja a la release 2, il vous faudra aussi le zend optimizer. Pour les utilisateur de Windows, n' oubliez pas de renommer le fichier php3.ini.dist en php3.ini
Pour télécharger MySQL cliquez -------------------------------) ici ou la
Vous choisissez suivant votre OS (Windows 95/98, Windows NT, Linux, Unix, ...)
Pour programmer il faut passer par deux phases :
C'est toujours de l'édition à la main. Faut voir a classer les infos selon des critères qui n'apparaissent pas forcement sur la page. Une fois ces infos classées, on obtient des catégories, des noms, des dates, des niveaux techniques, des sujets, etc. ...Tout ça peut être organisé dans une base de donnée. Le php ou le perl pourrait servir a extraire les infos de la data base et a les mettre en forme html pour donner le même résultat que vous pourriez obtenir, mais en évitant d'avoir à retaper un code html complet à l'arrivée de chaque nouvelle information.
Si vous voulez la documentation complète sur php cliquez ----------) ici
Si vous voulez la documentation complète sur MySQL
cliquez ----------) ici
La documentation c'est bien beau mais quand on est débutant dans ce langage même avec la documentation on a du mal a comprendre car il y a plein de condition si votre système c'est ça alors il faut faire ça etc...
En faite, c'est le principe même de la programmation, des conditions conditionnelles, des fonctions récursives, rémanentes, etc... Tout ça c'est des infos, que vous pouvez oublier, il faut commencer par lister les infos que vous n'avez pas afin de pouvoir les récupérer ensuite.
La chose la plus
importante est de connaître le serveur sur lequel on va
installer notre site Web mais il y a une chance sur deux pour que
ce soit un serveur apache vu qu'ils fournissent 50% des serveurs
de la planète (gratuitement).
Il y a deux solutions pour le connaître :
Appeler ce fichier test.php3 et
uploader le sur votre hébergeur . Ensuite, allez voir sur votre
adresse web: http://votrehébergeur.fr/votre_compte/test.php3
Et après , le serveur va vous afficher une page entière avec
assez d'infos pour répondre à quelques unes de vos questions.
Le meilleur moyen de tester ce langage est d'installer le même
serveur que votre hébergeur (soit un serveur apache dans plus de
50 % des cas) car ce langage s'exécutent uniquement du cote
serveur et pas du coté client.
Pour deux raisons :
La encore ça dépend de votre système :
Le serveur apache est conçu pour marcher avec Linux, Unix à
l'origine mais il existe une version pour Windows :
SI votre disque dur a 2 partitions
alors installer le sur le disque d:/
De cette façon votre serveur n'occupera pas le même
disque que votre système. Quand vous installez votre serveur
apache, choisissez de le mettre direct à la racine dans
c:\apache ou d:\apache et faire pareil pour mysql (c ou d:\mysql)
et php (c ou d:\php3). Une fois que vous avez installer apache,
il faut modifier une ligne dans le fichier httpd.conf (il se
situe dans le répertoire CONF)
N'oubliez pas de faire une copie de votre fichier httpd.conf, car c'est le seul fichier que vous serez amener à modifier (il est très sensible)
Recherchez la ligne ServerName; enlever le # (c'est comme un REM dans autoexec.bat) et vous mettez localhost comme nom de serveur :
ServerName localhost
Ca suffit pour rendre apache
fonctionnel, après il faut amorcer le serveur en lançant
l'exécutable, ce qui vous donnera une fenêtre msdos. Maintenant
tester en local en mettant http://localhost/ dans votre
browser et ainsi vous pourrez accéder aux rubriques d'aide
apache.
Il faut également modifier cette ligne dans le httpd.conf ,
cherchez la ligne qui commence par : DirectoryIndex et vous la
remplacez par :
DirectoryIndex index.html index.htm index.php index.php3
index.phtml
Ensuite recherchez la ligne : Addtype application et mettre ceci :
La premiere ligne (ScriptAlias
/php3/ " d:/php3/ ") se base sur le principe que vous
avez installez php sur le lecteur D:\ si vous l'avez mis sur c:\
vous modifiez en conséquence. Allez prendre les sources sur http://www.apache.org ou http://www.php.net tar xzfv apache_1.3.6.tar.gz On va maintenant configurer PHP3
comme module d'apache avec le support MySQL: On installe PHP3... Il faut à nouveau configurer
Apache pour prendre en charge le module et l'installer. N'oubliez
surtout pas de copier le fichier config de PHP3: Il ne reste plus qu'a éditer le
fichier config principal d'apache et éventuellement celui de
PHP3 avant de lancer le serveur. Editez le fichier La partie installation est
maintenant terminée, il ne reste plus qu'à tester.. :) D'abord faut aller récupérer les
sources sur http://www.mysql.net ou http://www.php.net
Après ça, vous sauvez, vous arrêtez et vous redémarrez apache
et vous pouvez tester le code test.php3 . Il suffit de taper
:http://localhost/test.php3"
Comment installer et configurer le serveur apache/php3 sous Unix ?
Maintenant, on configure Apache pour placer :
- Les fichiers de config dans /etc/httpd
- Les données qui seront installées dans /home/httpd
- Les logs dans /var/log/httpd
- Le reste sera installé par défaut dans /usr/local/apache
$ cd apache_1.3.6.tar.gz
$ ./configure --sysconfdir=/etc/httpd --datadir=/home/httpd
--logfiledir=/var/log/httpd
$ cd ..
$ tar xzfv php-3.0.11.tar.gz
$ cd php-3.0.11
$ ./configure --with-mysql --with-config-file-path=/etc/httpd
--with-apache=../apache_1.3.6 --enable-track-vars
$ make
$ make install
$ cd ../apache_1.3.6
$ ./configure --sysconfdir=/etc/httpd --datadir=/home/httpd
--logfikedir=/var/log/httpd
--activate-module=src/modules/php3/libphp3.a
$ make
$ su
$ make install
$ cd ../php-3.0.11
$ cp php3.ini-dist /etc/httpd/php3.ini
"/etc/httpd/httpd.conf" et vérifiez que le port est
bien 80 et
modifiez cette ligne:
DirectoryIndex index.html index.php3
Supprimez la et remplacez la par:
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
Apache ce lance exactement comme MySQL, c à dire par un script:
$ /usr/local/apache/bin/apachectl start
Installer mysql sous Unix ?
Placez les ensuite par ex. dans /usr/local:
$ cp mysql-3.22.25.tar.gz /usr/local
décompressez-les:
$ cd /usr/local
$ tar xzfv mysql-3.22.25.tar.gz
$ cd mysql-3.22.25
Compilez:
$ ./configure
$ make
$ make install
Ca se complique un peu car il faut
lancer un script qui va créer la base de donnée initiale de
MySQL:
$ /usr/local/mysql-3.22.25/scripts/mysql_install_db
Le server est commandé par un
script qui se trouve ici:
$ /usr/local/mysql-3.22.25/support-files/mysql.server
Maintenant il faut rendre le
script éxécutable:
$ chmod +x /usr/local/mysql-3.22.25/support-files/mysql.server
Normalement MySQL est bien
installé, pour vous en assurez tapez:
local/mysql-3.22.25/support-files/mysql.server start
et si vous voyez le msg "Starting mysql daemon with database
from
/usr/local/mysql/var" c que ca marche :)
Une fois le serveur lancé vous
pouvez vous y connecter en utilisateur root (root étant
l'administrateur de MySQL) sans mot de pass. Pour plus de
sécuritéon va donner un mot de passe à l'utilisateur root:$
/usr/local/mysql/bin/mysqladmin -u root password votre motdepasse
Voilà, now c un peu plus sécurisé.. :)
D'abord faut aller récupérer les sources sur http://www.mysql.net
Installer la version télécharger en choissisant install par defaut
puis vous lancez "mysqld.exe" directement depuis son folder (il s'execute en arriere plan donc si la
fenetre msdos disparait c'est bon signe donc inutile de le lancer deux fois.)
Pour verifier, aller sous dos et taper : telnet localhost 3306
La connexion va foirer mais elle affichera un truc comme :
"3.xx.xx-version?-|LEVbhd"
C'est la confirmation que le serveur tourne.
Aucun reglage n'est requis vous pouvez utiliser immediatement
myadmin avec localhost, root et aucun password.
Si vous l'installez en local, va
falloir editer votre php.ini et retirer le ";" qui se
trouve devant la ligne :
extension=php3_mysql.dll
Et recopier cette ligne en haut de votre script sinon ca ne
marchera pas
D'abord faut aller récupérer les sources sur http://www.mysql.net
Choisir install par defaut et monter mysql en
service.
Pour ca, aller sous dos dans le repertoire
c:/mysql/bin (ou autre si sélectionné) et
taper :
mysqld -- install
Attention dans la derniere version de mysql, le nom de l'executable a
changé, il s'appelle probablement mysqld-shareware.exe
ex : mysqld-shareware --install
Ensuite aller dans le panneau de configuration de windows NT et ouvrir l'icone services afin de verifier si mysql y figure bien et qu'il est démarré.
D'abord faut aller récupérer les
sources sur http://www.phpwizard.net
Télécharger MyAdmin. Decompressez le package dans un dossier se trouvant
dans votre webdir, ensuite vous editez le fichier
config.inc.php3 et vous y rentrez les infos necessaires (serveur,
login, pass, nom de la base). ensuite il n'y a plus qu'a lancer
index.php3 et vous voila sur votre base de
donnée.(l'administration)
Vous créez une page index.html et vous y mettez ce code :
<html>
<head></head>
<body>
<script>
document.location="index.php3";
</script>
</body>
</html>
C'est du javascript et en plus ca empêche de retourner en arrière.
Si vous avez la possibilité de modifier votre httpd.conf, allez voir la
ligne qui contient les infos du DirectoryIndex et mettez ceci :
DirectoryIndex index.html index.htm index.php3 index.php index.phtml
Arretez et redemarrez apache et le tour est joué.
Note : l'ordre des pages est arbitraire, si vous avez un fichier index.html
ET un fichier index.php3 c'est le .html qui se lancera par defaut.
Une base de donnees est structuree comme suit :
Nom de la base
+---Table1
+---champ1
+---champ2
+---champ3
+---Table2
+---champ1
+---champ2
+---Table3
+---champ1
+---champ2
Préambule :
Le format texte est plus facile d'utilisation car il se sert des permissions
locales pour gerer les acces aux ressources contenant les donnees (des fichiers au format
texte).
Pas besoin d'avoir de nom de host, user et mot de passe, car c'est NOBODY
(ou un process dédié) qui effectue les opérations.
Chaque acces devra passer par une verification des permissions au niveau du
systeme de fichiers et on devient donc tres dependant des performances du serveur.
En revanche MySQL est beaucoup plus rapide d'acces car il ne passe pas par
les permissions du systeme de fichiers local.
Il a son propre systeme d'authentification, il s'execute dans une zone
séparée de la mémoire qui est partagée avec le préprocesseur php installé, ce qui a pour
effet de booster les performances.
On peut tres bien utiliser un
fichier format texte pour stocker les informations au lieu de
passer par mysql. Il faut commencer par classer les informations
dans un fichier texte en respectant
ce format :
Une entree par ligne
Chaque champ est séparé par un " ; "
Tous les champs sont remplis
Le ";" n'est pas utilise dans la valeur des champs
Ceci est un format base de donnees
classique (CSV) que vous pouvez reproduire, par exemple en
exportant votre adressbook d'outlook.
Ouvrez outlook express, cliquez sur fichier/exporter/exporter
carnet d'adresse et choisir "fichier texte, valeurs separees
par des virgules", vous donnez un nom de fichier , et vous y
specifiez les champs que vous voulez exporter, et vous l'exportez
sur votre bureau. Ensuite vous editez le fichier avec notepad
(sans l'option retour a la ligne automatique). Vous pouvez
constater que la premiere
ligne comporte les titres des champs, et les autres lignes
comportent des informations correspondant aux titres de ces
champs.
En terme de bases de donnees, cette premiere ligne contient le
nom des champs, les autres lignes sont des entrees.
Les champs font partie d'une table et la table fait partie de la
base. C'est ainsi que l'on decrit la structure d'une base de
donnees.
Les differents champs sont separes par le " ; " et tout
fonctionnera bien du moment que ce que vous ne mettez pas de
" ; " ailleurs que comme separateur
(exemple : http://www.blob.gag/abcg.htm?ukw=1264;&wxc=4564 )
fera tout foirer car il y a un ";" dans l'url)
Ceci dit,vous pouvez tres bien choisir d'utiliser deux ou trois
caracteres comme separateurs (ex : "|!&" ),
reduisant ainsi les chances de te retrouver avec des
comportements indesires. Mais pour une question de compatibilite
avec mysql, oracle etc, il vaut mieux s'en tenir au ";"
Astuce : vous pouvez utilisez ce separateur " ¬ " à la place de " ; "
C'est une phrase que vous composez pour demander a une base de donnees de
livrer des infos.
Plus votre phrase est complexe, plus la reponse de la base est
precise.Vous avez par exemple 300 entrees dans la base , et vous
voulez rechercher toutes les entrees dont la premiere lettre est
P, qui datent de moins d'une semaine et qui contiennent le mot
CRYPTO.
votre phrase aura donc la syntaxe suivante :
$$> use database Nom_de_la_base;
$$> SELECT * FROM lexique WHERE (date-time()<3600*24*5) AND
((lettre='p') OR
(lettre='P')) AND description LIKE %crypto%;
En theorie vous etes connecte a la base de donnees en mode
terminal, mais comme c'est la methode la plus debile et la plus
chiante (pour ceux qui ont une vie sociale) on ne va en parler
qu'en theorie, ca vous permettra
d'imaginer une facon de la reproduire avec php3 (vous ecrivez
votre ligne de requete une fois et vous l'executez plusieurs
fois).
La premiere ligne vous fait selectionner la base que vous allez
utiliser (il peut y en avoir plusieurs).
Le * apres select va informer le serveur DB qu'il va falloir
renvoyer les valeurs dans TOUS les champs de la table 'lexique'
pour chaque condition remplie (SELECT * from lexique).
Le WHERE definit les conditions de la requete. Dans ce cas, on
definit une limite dans le temps, assumant que chaque champ de la
base a été populé avec des valeurs unix time, ce qui permet en
comparant de savoir a quelle date l'entree a ete introduite dans
la DB. Je suppose que vous connaissez les boleennes (OR, AND) et
leurs priorites par rapport aux parentheses, elles affinent la
recherche de la meme facon que quand vous mettez un + entre deux
mots dans un moteur de recherche.
Le LIKE vous premet de chercher une correspondance dans une
chaine de longueur differente, donc si dans le champ description,
il se trouve le mot crypto, la DB renverra toute l'entree.
A la fin vous vous retrouverez avec un flux de donnees qui sont
renvoyees sous forme de tableau (un peu comme le format CSV), il
faut que vous ayez des outils pour pouvoir manipuler ca en
tableau, l'instruction php qui s'occupe de ca est array() et
il y en a d'autres.
Tout depend des parametres du moteur de recherche, un moteur comme dejanews
par exemple ne sera pas dérangé par cette methode alors que google ou
altavista devront systematiquement se référer aux tags META ainsi qu'au
fichier ROBOTS.TXT qui doit se trouve a la racine de votre site
(voir http://www.w3c.org pour les standards).
Si vous remplissez bien le tag meta, il visitera seulement les pages de votre choix, aller donc voir sur http://phpwizard.net sur le meta generator, il est tres pratique (c'est un script php3)... Le code source est dispo dans la zone help/about
Avec les fichiers csv, il ne faut pas de retour chariot mais quand la ligne est trop importante textpad rajoute des retour chariot (voici la question et les explications)
ndt : achetez ce prog il est genial !Quand j'enregistre avec le notepad je choissis enregistrer sous au format texte mais quand je l'ouvre il me dit que c'est trop volumineux pourl'ouvrir avec le blocnote et me demande si je veux l'ouvrir avec notepad je dis oui et je m'appercois que certaine ligne ne sont plus a la ligne mais avec un retour chariot alors que dans mon note pad j'avais pas de retour chariot (ou est l'erreur)..
Okay, il est temps de changer
d'editeur texte, je te propose TEXTPAD, il existe en francais sur
www.textpad.com
Il colorise, le php, le javascript, le php, l'asp, etc, etc
Tout d'abord voici la table (c'est un exemple):
+---astuce
+---sujet
+---fichier
+---description
+---date
et voici le fichier csv qui y correspond
sujet;fichier;description;date
dos;dos001.htm;la commande dir;20/06/2000
si un champs est vide par exemple
ici on va prendre la date, vous remarquez que l'on ne met rien
mais que l'on met tout de meme le separateur " ; "
dos;dos001.htm;la commande dir;;
L'avantage premier d'une base de donnees est de pouvoir stocker des informations
classées en grande quantité.
La force de ce support est l'acces sélectif qu'il permet.
Ces acces s'effectuent en formulant des requetes sous forme de phrases.
Le standard le plus utilisé est le SQL (Simple Query Language) et il a été
popularisé par ORACLE.
L'autre avantage c'est qu'avec les DB (data
base=base de donnée) vous les configurez une fois et apres vous n'y touchez plus
Niveau DB une fois que c'est regle y a plus rien a faire.
<?
# le separateur
$separator="¬";
# le ou les fichiers a scanner
$csvfile[0]="nom_de_votre_fichier.csv";
// $csvfile[1]="nom_de_votre_fichier.csv";
// $csvfile[2]="nom_de_votre_fichier.csv";
// $csvfile[3]="nom_de_votre_fichier.csv";
# le code html pour afficher :
$table_in="<table align=center border=1>";
$table_out="</table>";
$row_in="<tr>";
$row_out="</tr>";
$field_in="<td bgcolor=#c0c0c0><nobr><font
size=-1><b>";
$field_out=" </td>";
# Combien de fichiers a scanner ?
$nb=count($csvfile);
$i=0;
while($i<$nb)
{
# a activer si heberge par php4
// error_reporting(1);
$row=0;
# ouvre le fichier csv en lecture
$fpread=@fopen($csvfile[$i], "r") or die;
echo $table_in;
while ($buffer=fgetcsv($fpread, 65535, $separator))
{
# combien de champs ?
$num = count($buffer);
echo $row_in;
$row++;
for ( $c=0; $c<11; $c++ ) print
$field_in.$buffer[$c].$field_out;
echo $row_out;
}
echo $table_out;
$i++;
}
?>
Voici la structure d'un header
contenu dans un fichiers html
<html>
<head>
</head>
<body background="back.jpg"
bgcolor="#000000" text="#FFFFFF"
link="#00FF00" vlink="#0000FF">
Avec php vous pouvez stocker des
donnees dans des variables, et elles seront reutilisables pendant
tout le deroulement du script
par ex :
$couleur_fond="#000000";
$couleur_texte="#ffffff";
$couleur_titre="yellow";
Apres a chaque fois quevous avez
besoin de rappeler cette couleur
vous rappellez la variable en l'ecrivant dans le document :
<body bgcolor="<? echo $couleur_fond; ?>"
text="<? echo $couleur_texte; ?>">
etc..etc..
De la meme facon, vous pouvez inclure un autre document a
l'interieur de celui qui s'execute.
Si par exemple vous remplacez le haut de votre page (et tout le
code html ,head, body, bgsound, etc) par une ligne comme ca :
<? include("header.php3") ?>
vous creez au prealable un fichier header.php3 dans lequel vous
recopiez le code html et vous pouvez deja exporter votre header
et le reutiliser sur tout votre site en l'appelant de la meme
facon :
<?
include("header.php3"); ?>
vous pouvez faire la meme chose pour le footer.
le config.php3
<?
// les deux barres permettent d'ecrire un commentaire sans gener
l'execution du code
//couleur du texte et des liens
$fond="#000000";
$texte="#FFFFFF";
$couleur_link="#00FF00";
$couleur_vlink="#80FFFF";
$couleur_alink="#FFFFFF";
$topmargin="0";
$title="ICI LE TITRE DE VOTRE SITE";
?>
le header.php3
<HTML>
<HEAD>
<META HTTP-EQUIV="remplissez vos meta tag">
<META HTTP-EQUIV="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<TITLE><? echo $title; ?></TITLE>
</HEAD>
<BODY topmargin="<? echo $topmargin; ?>"
background="<? echo $background; ?>"
bgcolor="<? echo $fond; ?>" text="<? echo
$texte; ?>" link="<? echo $couleur_link;
?>" vlink="<? echo $couleur_vlink; ?>"
alink="<? echo $couleur_alink; ?>">
ainsi grace au variable definie dans le config on recupere les valeurs
$fond="#000000";
$texte="#FFFFFF";
$couleur_link="#00FF00";
$couleur_vlink="#80FFFF";
$couleur_alink="#FFFFFF";
$topmargin="0";
le footer.php3
</BODY>
</HTML>
Ecrivez les balises qui terminent toutes vos pages html ou htm
le index.php3
l'index.php3 va recupe toutes les valeurs definies dans vos differents fichiers de configuration soit:
<?
include ("config.php3");
include ("header.php3");
//maintenant reste plus qu'a
appeler un fichier soit :
include ("votre_fichier"."php3");
include ("footer.php3");
?>
L'avantage de cette technique c'est que vous pouvez retirer tout le code html qui figure deja dans le config, header et le footer soit ici:
<HTML>
<HEAD>
<META HTTP-EQUIV="remplissez vos meta tag">
<META HTTP-EQUIV="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<META NAME="remplissez vos meta tag">
<TITLE><? echo $title; ?></TITLE>
</HEAD>
<BODY>
</BODY>
</HTML>
Maintenant vous pouvez changer l'apparance de vos pages grace a un seul fichier soit le config.php3
Vous pouvez faire de meme pour les stats et les pub soit des fichiers php3 (statistique.php3 et publicite.php3)
Comment stocker les variables du config.php3 dans ma base de donnée ?
il suffit de creer une table variable dans laquelle on mettra des valeurs qui seront stocker de facon temporaires ou definitives .
Variable
.......+Var_nom
.......+Var_valeur
Comment on declare une variable ?
D'abord on lui trouve un nom, ensuite on lui assigne une valeur.
ex :
x=1
Le nom c'est "x" et sa valeur c'est 1.
On a donc deux entites (nom et valeur) qui sont en commun avec
tout ce que vous povez pouvoir manipuler.
Il suffit de creer une table avec deux champs, "nom" et
"valeur" et d'y stocker tout ce qu'il te faut :
background=>back.jpg
fond=>#000000
texte=>#ffffff
couleur_lien=>#00FF00
couleur_vlien=>#0000FF
fichier_sound1=>parfums.mp3
fichier_sound2=>nuit.mp3
En php ca donnerait :
$background="back.jpg";
$fond="#000000";
$texte="#ffffff";
$couleur_lien="#00FF00";
$couleur_vlien="#0000FF";
$fichier_sound1="parfums.mp3";
$fichier_sound2="nuit.mp3";
en csv :
background¬back.jpg
fond¬#000000
texte¬#ffffff
couleur_lien¬#00FF00
couleur_vlien¬#0000FF
etc......
Disons que tous vos liens ne
pointent plus sur des pages mais sur des donnees. Prenons
l'exemple d'un lien qui va afficher le document page1.htm.
Nous avons deux facons d'y arriver, la premiere (classique) est
le lien hypertexte vers le nom du document, la deuxieme (php) est
un lien hypertexte vers le script d'index (par defaut sur le
serveur) avec envoi de donnee par le biais de l'url :
1) <a href=page1.htm>Page1</a> methode classique
2) <a href=index.php3?var_page=page1.htm>Page1</a>
methode sophistiquee
Dans le cas No1, Page1.htm existe et ne contient que du blabla
texte, sans header ni footer,
Si vous cliquez sur le lien votre page s'affiche mais pour
revenir a l'index, vous etes oblige de revenir en arriere ou
d'ajouter un lien "back" sur votre document page1.htm
Pas tres pratique si vous avez 500 pages a modifier...
Dans le cas No2, la page
index.php3 debutera avec une variable deja declaree par l'url
(equivalent de $var_page="page1.htm";) et on pourra
donc la reutiliser dans le script.
Dans index.php3 on se retrouve avec:
<?
include("config.php3");
include("header.php3");
if (file_exists($var_page)) { include($var_page); }
else { include("404.htm"); }
include("footer.php3");
?>
Le if(file_exists) verifie si le fichier est bien present avant
de le charger, ca evite l'affichage d'un message d'erreur. On
peut meme gerer quelques types d'erreurs internes au cas ou le
fichier
appelé n'existe pas.
Donc en appelant le document de cette facon :
http://mon.domaine/index.php3?var_page=le_nom_de_ma_page.htm
la page est generee "on the fly" (a la volee) et le
petit feignant qui sommeille en chacun de nous se retrouve
comblé par la satisfaction.
C'est le meme principe que pour le config et le header ...
Dans votre config.php3 vous definissez vos variables :
$font_f_title="<font
face=verdana>";
$font_s_title="<font size=2>";
$font_c_title="<font color=blue>";
$font_f_box="<font face=arial>";
$font_s_box="<font size=2>";
$font_c_box="<font color=blue>";
f pour la face, s pour le
size et c pour la couleur :ca permet de ci retrouver plus
facilement plus tard :
Dans le meme esprit vous pouvez
definir les tables :
$box_m_width="650";
$box_m_height="400";
$box_m_color="gray";
$box_main="<table width=$box_m_width height=$box_m_height
bgcolor=$box_m_color>";
Ensuite il ne vous reste plus qu'a
coder chaqu'un de vos fichiers htm ou html ou php3 :
il suffit de rapeller vos variables , pour ce faire voici le code
:
ainsi vous pouvez remplacer votre <font face=verdana> par ceci < ? echo $font_f_title ; ?>
mais vous pouvez faire ceci :
$font_title="<font size=2 face=verdana color=#000000>";
soit pour appeler toute la chaine <font size=2 face=verdana color=#000000>
vous ecrivez ceci <? echo $font_title ; ?>
vous pouvez egalement utiliser les feuilles de style pour faire ceci
Je suis heberge en php 4 , mes scripts sont en php3 et j'ai plein de WARNING ?
Ca se regle sans probleme avec ceci :
error_reporting(o);
ou
error_reporting(1);
J'ai plein de table a creer je dois les creer à la main (y pas plus simple) ?
Vous avez probablement un fichier
.sql qui vous est donne avec les scripts que vous recuperer et
qui contient les commandes de creation des tables et champs.
Vous avez un textarea dans MyAdmin
"Exécuter une ou des requêtes sur la base
nom_de_votre_base "
Vous y collez le contenu de votre fichier .sql ou .mysql soit par
exmple :
CREATE TABLE vbooth_data (
pollID int(11) NOT NULL,
optionText char(50) NOT NULL,
optionCount int(11) DEFAULT '0' NOT NULL,
voteID int(11) DEFAULT '0' NOT NULL
);
et vous appuyez sur executer
Avec les scripts php en general il y a un fichier de config a triturer avant de commencer.
Deplacez votre fichier a la racine
et appelez des modules qui appellent des modules.
ex:
dans index.php3
<?
$var_page="votre_fichier";
include($votre_fichier.".php3");
?>
dans votre_fichier.php3 :*
<?
$sondage_folder="votre_repertoire";
$vote_index_file="le_fichier_a_appeler";
include($sondage_folder."/".$vote_index_file);
?>
De cette facon le pointeur php reste a la racine, meme si vous
incluez un fichier qui est dans un sous-sous-sous dossier, vous
n'aurez plus a rajouter des "../" partout et votre
dossier "votre_repertoire" peut etre deplace, renomme,
mis dans un sous-dossier, sans que vous ayez a modifier aucun des
fichiers qui s'y trouvent (vous modifiez juste le fichier qui
appelle ce fichier)..
<?
include("config.php3");
include("header.php3");
include("votre_page_accueil.php3");
include("footer.php3");
?>
Le probleme vient du faite que vous avez figé votre page sur
l'accueil et du meme coup impossible de faire varier le contenu.
Reprenons le schema de navigation :
1ere visite => index.php3 affichera la page d'accueil (par
defaut)
1er click => index.php3 affichera la page appelée par le lien
cliqué
Les url se presenteront comme suit :
http://mon.domaine/
Et lors d'un appel de lien :
http://mon.domaine/?page=liens
http://mon.domaine/?page=astuces§ion=win
etc..etc
Donc on peut s'appuyer sur une valeur hypothetique stoquee dans
la
variable $page.
Meme chose avec $section (le dossier ou se trouve la page que
vous voulez inclure)
Si cette variable n'existe pas, on lui assigne une valeur par
defaut :
if (!$page) $page="votre_page_accueil";
if(!$section) $section="pages/";
ensuite on inclut le module appelé
include($section.$page.".php3");
Et sur vos liens vous pouvez mettre :
<a
href=index.php3?page=le_page_a_appeler§ion=le_repertoire_ou_se_trouve_la
page>le_titre_du_lien</a>
Il y a deux facons :
1) le formulaire (methode POST)
<input name="nom_de_la_variable"
value="valeur">
Sera recu par la cible comme etant
$nom_de_la_variable="valeur";
2) le lien (la methode GET)
<a
href=nom_de_la_page_cible.php3?nom_de_la_variable=valeur&autre_variable=autr
e_valeur>texte a lier</a>
Une methode sympa en php consiste a remplacer les mots qui
definissent les noms de variables par d'autres variables.
Sur le site http://www.nexen.net/allreponse (dans la section bookmake puis php3 & php4)
Sinon voici deux bonnes adresses :http://www.hotscripts.com/cgi-bin/search.cgi?query=php&category=All
ou
http://www.trippant.org/index.php3
Tout d'abord vous creez un fichier formulaire.html avec ceci:
<html>
<body>
Veuillez vous en enregistrer : <br>
<form method="post"
action="traitement.php3">
Nom : <input type="text" name="nom"
value=""><br>
Prenom : <input type="text" name="prenom"
value=""><br>
Pays : <input type="text" name="pays"
value="France"><br>
<select name="sexe">
<option value="masculin">masculin
<option value="feminin">feminin
</select>
<input type="submit" value="Envoyer">
</form>
</body>
</html>
------------------------------------
Maintenant, il faut recuperer les
donnees avant de les envoyer
Creer le fichier traitement.php3 comme specifier plus haut avec
ceci:
<html>
<body>
Les informations suivantes nous ont été envoyées : <br>
<?
//On affiche ici les informations saisie
echo " Nom : $nom <br>";
echo " Prenom : $prenom <br>";
echo " Pays : $pays <br>";
echo " Sexe : $sexe <br>";
//On envoit un mail contenant les données
mail("mon@adresse.email","Formulaire en
ligne","$nom\n$prenom\n$pays\n$sexe","From:
mon@adresse.email\nReply-To: mon@adresse.email");
?>
</body>
</html>
Maintenant imaginons que tout
votre site est gere dynamiquement soit à la place de :
<form method="post"
action="traitement.php3">
on ecrit surtout pas ca (bien que ca fonctionne:
<form method="post" action="index.php3?section=votre_repertoire/&page=la_page_traitement">
il faut ecrire ceci plutot parce
que dans un post, on ne precise que l' URI et non pas l' URL soit
:
<form method=post action=index.php3>
<input type=hidden name="section"
value="votre_repertoire/">
<input type=hidden name="page"
value="la_page_traitement">
et dans votre page d'index vous
mettez ceci :
if($page=="") $page="votre_page_d'accueil_du_site";
if($section=="") $section="votre_repertoire_ou_se_trouve_la_page_d'acceuil";
if (file_exists("$section$page.php3"))
{ include ("$section$page.php3"); }
Elle déconne gravement sur toutes les versions de win32.
Cette fonction existe mais c'est
du javascript
<a href=""
onclick="history.back()">Page précedente</a>
Toutefois, il est possible de le faire en php aussi :
<a href="<? echo $HTTP_REFERRER; ?>">Page précedente</a>
Le "../" est commun a
toutes vos images quand une condition est remplie.
Identifiez cette condition et attribuez lui la valeur commune
"../"
Ex :
dans le config.php3
if($section!="")
$image_folder="/$section../images";
dans vos fichiers :
echo "<img src=$image_folder/image.gif>";
eventuellement vous redeclarez la variable pour chaque section
comme ca vous pouvez meme definir un dossier image par folder.
Vous avez juste a remplacer "login" par votre nom et "pass" par votre mot de passe
<?php
if(!isset($PHP_AUTH_USER)) {
Header("WWW-Authenticate: Basic entrer=\"Entrer dans la
page\" ");
Header("HTTP/1.0 401 Unauthorized");
echo "Vous avez appuyé sur le bouton annuler!!!\n";
exit;
} else {
if ( ($PHP_AUTH_USER == "login") && (
$PHP_AUTH_PW == "pass" ))
{
echo
"<html><body><center><h1>BIENVENUE
<P></h1></center></body></html>";
}
else
{
echo "<html><body><center><h1>VOUS
N'AVEZ PAS
L'AUTORISATION<P></h1></center></body></html>";
}
}
?>
DEMANDER AVANT A VOTRE HEBERGEUR S'IL AUTORISE CETTE FONCTION
Voici tout d'abord le premier
fichier, que l'on appelera : htaccess
Celui-ci contient les directives qui nous permettent de protéger
le répertoire.
--------------------------------------------------------------------------------
AuthUserFile home/repertoire/.htpasswd
AuthGroupFile /dev/null
AuthName ByPassword
AuthType Basic
<limit GET>
require valid-user
</Limit>
--------------------------------------------------------------------------------
Maintenant, créer un cichier qui contiendra les couples : Nom
d'utilisateur + login.
Nous appelerons ce fichier : htpasswd
Ce fichier ce présente sous la forme suivante :
martin:Xfv46GgHz
jean:FrgyHYJUJjj
Francois:FRZScgtHYk
il est possible de crypter les mots de pass a cette adresse vous trouverez ce genre d'outil :
http://php3.hebergement-discount.com/protection.php3
Vos fichiers htpasswd et htaccess
sont terminé.
Envoyez les sur le serveur dans le répertoire à protéger.
Renommez les en .htpasswd et .htaccess