Blog of ChristoPHPe !
Bienvenue sur mon Blog !

Blog of ChristoPHPe !

Les REGEX

2 septembre 2008 à 00:45, par Christophe

Bonsoir ;)

Juste 2 petits liens concernent les REGEX.

Les voici:

Voilà :)

[PHP] Le regiter_globals

18 août 2008 à 13:55, par Christophe

Bonjour tout le monde !
Je vais vous parler du register_globals, je trouve que c’est un point important de PHP.

Tout d’abord, je vous conseil de lire cela

Si vous avez bien compris, cette directive permet de donner une égalité entre $_GET['variable'] et $variable
Regardez cet exemple (source: php.net) :

<?php
// $authorized = true uniquement si l'utilisateur est identifié
if (authenticated_user()) {
    $authorized = true;
}
 
// Comme nous n'avons pas initialisé $authorized avec false, cette dernière
// peut être définie via register_globals, comme avec l'URL GET auth.php?authorized=1
// Tout le monde peut facilement être reconnu comme identifié!
if ($authorized) {
    include "/donnees/critiques/data.php";
}
?>

Embêtant non ?
C’est pour ce genre de faille que je (et pas que moi) vous conseil de mettre register_globals à OFF !

De plus, si plus tard vous voulez passer à PHP 6, vous n’êtes pas sortie d’avance, puisque il vous faudra convertir votre code… (register_globals a été supprimé dans PHP 6, et c’est tant mieux !)

Donc si vous souhaitez récupérer un variable en provenance de l’URL, vous devez faire :

echo $_GET['variable'];

et non pas

echo $variable;

Sinon, que votre hébergeur ou votre serveur ai register_globals activé, ce n’est pas grave, il faut déjà ne pas l’utiliser, mais même, je vous conseil de le désactiver d’office si vous pouvez éditer votre php.ini :)
Si vous n’avez pas accès au php.ini, vous pouvez le désactiver via un .htaccess de cette façon

php_flag register_globals off

Non au register_globals

[PHP5] SuperGlobale $_SERVER[]

15 août 2008 à 00:44, par Christophe

Bonsoir,

On a régulièrement besoin de SuperGlobale comme $_SERVER[] pour savoir des choses comme le script courant, l’adresse IP du client, etc…

Les voici toutes décrites :

echo $_SERVER['HTTP_HOST'];

Retourne l’hôte courant.
Exemples : www.chrislabricole.fr, blog.chrislabricole.fr

echo $_SERVER['HTTP_USER_AGENT'];

Retourne le contenu de l’en-tête User_Agent du navigateur utilisé par le client.
Exemple : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16

echo $_SERVER['DOCUMENT_ROOT'];

Retourne la racine sous laquelle le script courant est exécuté.
Exemple : /var/www/

echo $_SERVER['HTTP_ACCEPT'];

Retourne le contenu de l’en-tête Accept de la requête courante s’il y en a une.

echo $_SERVER['HTTP_ACCEPT_CHARSET'];

Retourne le contenu de l’en-tête Accept-Charset de la requête courante si elle existe.
Exemple : ISO-8859-1,utf-8;q=0.7,*;q=0.7

echo $_SERVER['HTTP_ACCEPT_ENCODING'];

Retourne le contenu de l’en-tête Accept-Encoding de la requête courante si elle existe.
Exemple : gzip,deflate

echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];

Retourne le contenu de l’en-tête Accept-Language de la requête courante si elle existe.
Exemple : fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3

echo $_SERVER['HTTP_CONNECTION'];

Retourne le contenu de l’en-tête Connection de la requête courante si elle existe.
Exemple : keep-alive

echo $_SERVER['REMOTE_ADDR'];

Retourne l’adresse IP du client.
Exemple : 56.58.236.89

echo $_SERVER['REMOTE_PORT'];

Retourne le port utilisé par la machine cliente pour “communiquer” avec le serveur Web.

echo $_SERVER['SCRIPT_FILENAME'];

Retourne le chemin absolu vers le fichier contenant le script en cours d’exécution.

echo $_SERVER['SERVER_ADDR'];

Retourne l’adresse IP du serveur.

echo $_SERVER['SERVER_ADMIN'];

Retourne l’adresse e-mail de l’administrateur du site Web ou de l’hébergement…

echo $_SERVER['SERVER_NAME'];

Retourne le nom du serveur spécifié dans les configurations du VirtualHost de Apache
Exemple : chrislabricole.fr

echo $_SERVER['SERVER_PORT'];

Retourne le port utilisé par le serveur Web.
Pour HTTP : 80

echo $_SERVER['SERVER_SIGNATURE'];

Retourne le signature du serveur Web.

echo $_SERVER['SERVER_SOFTWARE'];

Retourne la version du serveur.
Exemple : Apache/1.3.34

echo $_SERVER['GATEWAY_INTERFACE'];

Retourne le numéro de révision de l’interface CGI du serveur.
Exemple : CGI/1.1

echo $_SERVER['SERVER_PROTOCOL'];

Retourne le nom et révision du protocole de communication.
Exemple : HTTP/1.1

echo $_SERVER['REQUEST_METHOD'];

Retourne la méthode de requête utilisée pour accéder à la page
Exemple : GET, HEAD, POST, PUT

echo $_SERVER['QUERY_STRING'];

Retourne la chaîne de requête, si elle existe, qui est utilisée pour accéder à la page
Exemple : page=2

echo $_SERVER['REQUEST_URI'];

Retourne l’URI qui a été fourni pour accéder à cette page.
Exemple : /repertoire/index.php?param=valeur

echo $_SERVER['SCRIPT_NAME'];

Retourne l’URI qui a été fourni pour accéder à cette page mais sans les paramètres.
Exemple : /repertoire/index.php

echo $_SERVER['PATH_TRANSLATED'];

Chemin dans le système de fichiers (pas le document-root) jusqu’au script courant, une fois que le serveur a fait une traduction chemin virtuel -> réel.
Exemple : var/www/repertoire/index.php

La liste des SuperGlobales de base est terminée, maintenant, voici se que l’on peux faire grâce à cela :
Obtenir seulement le nom du fichier:

echo basename($_SERVER['SCRIPT_NAME']);

Exemple : index.php

Pour obtenir l’hôte grâce à l’adresse IP du client par exemple :

echo gethostbyaddr($_SERVER['REMOTE_ADDR']);

Exemple : ug-in-f147.google.com (IP de Google)

Voilà, après, à vous de faire vos montages pour obtenir le résultat que vous souhaitez :)

[PHP] Système de quota, graphique et textuel…

12 août 2008 à 23:31, par Christophe

Bonsoir !

J’ai moi-même cherché pendant longtemps un système de quota. Mais malheureusement, certains son pas beaux, d’autres marches pas, bref… ici, celui-ci est graphiquement correct, surtout fonctionnel et son fonctionnement est assez facile à comprendre pour les débutants :P

Voilà le code complet :

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Quota Disque</title>
<style type="text/css">
.pourcentage {
	position:absolute;
	color:#FFFFFF;
	font-weight:bold;
	font-family:Arial, Helvetica, sans-serif;
	font-size:small;
	height:20px;
	text-align:center;
	padding-top:2px;
}
</style>
</head>
 
<body>
<?php
function DirSize($path , $recursive=TRUE) {
	$result = 0;
 
	if( !is_dir($path) || !is_readable($path)) {
		return 0;
	} else {
		$fd = dir($path);
		while($file = $fd->read()){
			if(($file != ".") && ($file != "..")){
				if(@is_dir("$path/$file/")) {
					$result += $recursive?DirSize("$path/$file/"):0;
				} else {
					$result += filesize("$path/$file");
				}
			}
		}
		$fd->close();
		return $result;
	}
}
 
 
$taille_du_quota = 1024; // Taille fixe du quota en Mega Octets
$taille_barre = 200; // taille de la barre totale en px
$taille_abs = $taille_du_quota / $taille_barre;
 
$rep = "./"; // chemin du répertoire a inspecter
 
$taille_utilisee = round(DirSize($rep)/1048576,2);  //DirSize($rep,false) pour non recursif.
 
$pourcentage = round(($taille_utilisee*100)/$taille_du_quota,2);  // conversion en %
 
$path_abs = "images/"; // repertoire image a la racine du site.
 
$bleue = $taille_utilisee / $taille_abs;    // taille de la barre bleue
$jaune = ($taille_du_quota - $taille_utilisee) / $taille_abs;   //taille de la barre jaune
?>
 
<div style="width:<?php echo $taille_barre; ?>px;"><div class="pourcentage" style="width:<?php echo $taille_barre; ?>px;"><?php echo $pourcentage; ?>%</div><img src="<?php echo $path_abs; ?>barre_bleue.png" width="<?php echo $bleue; ?>" height="20" title="<?php echo $pourcentage; ?>%" alt="<?php echo $pourcentage; ?>%" /><img src="<?php echo $path_abs; ?>barre_jaune.png" width="<?php echo $jaune; ?>" height="20" title="<?php echo $pourcentage; ?>%" alt="<?php echo $pourcentage; ?>%" /></div>
Vous utilisez <b><?php echo $taille_utilisee; ?> Mo</b> sur les <b><?php echo $taille_du_quota; ?> Mo</b> allou&eacute;
</body>
</html>

Pour les deux images, téléchargez la première ici, et la deuxième là

Cliquez ici pour aller sur la page d’exemple (que j’ai réduit à 50 Mo pour bien voir la deuxième barre)

[PHP & JavaScript] Liste de pays avec un drapeau qui change

7 août 2008 à 20:13, par Christophe

Bonsoir !

Je vais vous montrer quelque chose d’assez sympa qui fait que quand vous sélectionnez un pays via un SELECT le petit drapeau de ce pays s’affiche sur le côté…

Tout d’abord, téléchargez ce fichier, et chargez-le par MySQL…

Après, passons au code de la page avec du HTML, du PHP :

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
<?php
mysql_connect('localhost', 'nom_utilisateur', 'mot_de_passe');
mysql_select_db('base_de_donnees');
$requete = mysql_query('SELECT * FROM pays ORDER BY pays ASC') or die('Erreur SQL: ' . mysql_error());
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Liste des Pays</title>
<script language="javascript" type="text/javascript">
function showFlag(init){
	document.getElementById('flag').innerHTML = '<img src="./flags/'+init+'.png" alt="'+init+'" />';
}
</script>
<style type="text/css">
#flag {
	width:18px;
	height:12px;
	margin-left:8px;
}
 
select#pays option {
	background-repeat:no-repeat;
	padding-left:23px;
}
</style>
</head>
 
<body>
<select name="pays" onChange="showFlag(this.value);" id="pays">
<option selected="selected" disabled="disabled" value="--">S&eacute;lectionnez un pays</option>
<?php
while( $donnees = mysql_fetch_array($requete) ){
 
	$initiale = $donnees['ini'];
	$pays = utf8_encode(htmlentities($donnees['pays']));
	// Pour le background-image, c'est pour afficher directment le drapeau dans le SELECT, mais cela marche seulement avec FireFox... rien ne vous empêche de la lever si vous préférez...
	echo '<option value="'.$initiale.'" style="background-image:url(./flags/'.$initiale.'.png);">'.$pays.'</option>'."\n";
}
?>
</select><span id="flag"></span>
</body>
</html>

Voilà, ça, c’est fait, il nous reste plus que les drapeaux qui sont trouvables ici.
Téléchargez-le puis décompressez ça directement à la racine de votre site.

Et voilà, le résultat ici

Bonne soirée !

« Articles précédents  |  Articles suivants »




-->