 Groupe : Membres
|
Bonjour, je propose ce topic pour vous permettre de poster ici vos petites astuces en PHP ainsi que quelques petites fonctions qui peuvent servirent à beaucoup de monde.
Alors je me lance :
Fonctions
Fonction pour obtenir un extrait de texte :
Code : PHP1
2
3
4
5
6
7
8
9 | <?php
function extrait($string,$start = 20,$end = 15,$sep = ' [...]')
{
$extrait = substr($string,0,$start);
$extrait = substr($string,0,strrpos($extrait,' ')).$sep;
$extrait2 = strstr(substr($string, -$end,$end),' ');
return $extrait.' '.$extrait2;
}
?>
|
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | <?php
// Exemple :
$texte = '
Pellentesque habitant morbi tristique senectus.
Ut mattis risus ac erat. Nam volutpat, nisl vitae venenatis mollis, ante
erat tincidunt purus, nec ornare felis tellus sed purus. Phasellus orci.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas. Curabitur sapien pede, malesuada ac, ultricies in, dignissim eget, mauris.
Nullam varius diam ac ligula. Morbi mattis posuere odio.';
echo extrait($texte);
echo '<br />';
echo extrait($texte,0,20);
echo '<br />';
echo extrait($texte,30,0,'');
echo '<br />';
echo extrait($texte,20,20,'--');
echo '<br />';
echo extrait($texte,100,100);
echo '<br />';
?>
|
Citation : Rendu :
Pellentesque [...] posuere odio.
[...] posuere odio.
Pellentesque habitant morbi
Pellentesque-- posuere odio.
Pellentesque habitant morbi tristique senectus. Ut mattis risus ac erat. Nam volutpat, nisl [...] ultricies in, dignissim eget, mauris. Nullam varius diam ac ligula. Morbi mattis posuere odio.
----------------------------------------
Fonction extention, retourne l'extention de la chaine :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11 | <?php
// Une fonction qui determine l'extention de n'importe-quel fichier / url...
function extention($ext)
{
$ext = substr($ext,strrpos($ext,".")+1);
return $ext;
}
echo extention("uploads/fichiers/fichier.arnaud.gz");
// Imprime gz
?>
|
----------------------------------------
Fonction pour compter le nombres d'occurences de $string dans un tableau indexe:
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14 | // Ceci est une fonction que j'ai crée pour compter le nombre de $string dans le tableau.
function count_str($string, $array)
{
if(is_array($array))
{
$str = implode(' -',$array);
$string .= '-';
return substr_count($str, $string);
}
else
die('Secound <strong>ARGUMENT</strong> is not array');
}
// On transmet à la fonction une chaine et un tableau.
|
----------------------------------------
Fonction qui colore une ligne d'un tableau d'un couleur différente ( connue )
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12 | <table>
<?php
$couleurs = array('red', 'green', 'blue', 'cyan');
$nb = count($couleurs);
$i = 0;
while($i < 20 ) {
echo '<tr style="background-color: '. $couleurs[ $i % $nb ] .'"><td>Texte de la collone A</td><td>Texte de la colonneB</td></tr>';
$i++;
}
?>
</table>
|
Astuces
Appliqué une fonction aux donnne recupere par un post ou de mysql :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | // POST exemple :
foreach($_POST as $key => $val)
{
${$key} = htmlentities($val);
}
// Va crér un variable $nom protégé par htmlentities pour une variable $_POST['nom'] par exemple
//Mysql :
$r = mysql_query('...');
while($d = mysql_fetch_array($r))
{
foreach($d as $key => $val)
{
${$key} = stripslashes($val);
}
}
|
Empty / Isset
Alors un probleme que l'on rencontre souvent, c'est la différence en isset et empty, car contrairement à ce que certains débutants crois, empty n'est pas le contraire d'isset ( c'est !isset dans une condition ) :
Exemple :
Code : PHP 1
2
3
4
5
6
7
8
9
10
11
12 | $a = '';
if(isset($a))
echo '$a existe';
else
echo '$a n\'existe pas';
// affichera $a existe et
if(empty($a))
echo '$a n\'existe pas ou n\'est pas définie';
// afichera $a n'existe pas ou n'est pas définie
|
Ainsi isset verifie juste qu'une variable est définie, alors qu'empty, verifie si une variable est remplie
CF : http://www.php.net
Voila : enjoy
Édité
le 04/08/2008 à 12:45:32
par nax
|
Beuhhhh
 Groupe : Membres
|
Une astuce simple pour afficher vos sources à placer en début de page
Code : PHP
Une fonction permettant de prendre le temps pour faire des bench
Code : PHP<?php
function getmicrotime (){
$mtime = explode(' ', microtime());
return ((float )$mtime[1]+ (float )$mtime[0]);
}
?>
Envoyer des mails par sockets (code fait il y a longtemps)
Code : PHP<?php
//Options du mail
$mail['serveur']= "mail.vt-net.org"; //serveur pour l'envoi des mails
$mail['sujet']= "Newletter"; //sujet par defaut du mail
$mail['nom']= ""; //nom de l'expéditeur (si vous le laissez blanc se sera le nom qui est sur l'adresse email qui serat utilisée)
$mail['adresse']= "vous@hebergeur.com"; // Adresse email de l'expéditeur
function sk_mail ($nom_exp, $mail_exp, $nom_dest, $mail_dest, $subject, $message){
// permission d'utilisation des options
global $mail;
// réglages des noms, du sujet et du serveur
if ($nom_exp == null) list($nom_exp, $azer) = explode('@', $mail_exp);
if ($nom_dest == null) list($nom_dest, $azer) = explode('@', $mail_dest);
if ($subject == null) $subject = $mail['sujet'];
$fp = fsockopen($mail['serveur'], '25', $errno, $errmsg);
fputs($fp, "HELO " . $mail['serveur'] . "\n");
fputs($fp, "MAIL FROM:<$mail_exp>\n");
fputs($fp, "RCPT TO:<$mail_dest>\n");
fputs($fp, "DATA\nFROM: $nom_exp <$mail_exp>\nTO: $nom_dest <$mail_dest>\n");
fputs($fp, "SUBJECT:$subject\n");
fputs($fp, "CONTENT-TYPE: TEXT/HTML;\n");
fputs($fp, "\n$message");
fputs($fp, "\n.\n");
fputs($fp, "QUIT\n");
while ($new = fgets($fp, 1024)) {
@ $resultat .= str_replace(chr(10), '<br>', $new);
}
fclose($fp);
if (strpos($resultat, '501') > - 1) {
sk_log ("L'adresse $mail_exp a été refusée par le serveur.(erreur 501)");
return 'ERREUR : Adresse expéditeur refusée par le serveur...<br>';
}
elseif (strpos($resultat, '503') > - 1) {
sk_log ("L'adresse $mail_dest a été refusée par le serveur.(erreur 503)");
return 'ERREUR : Adresse destinataire refusée par le serveur...<br>';
}
elseif (strpos($resultat, '550') > - 1 OR strpos($resultat, '500') > - 1) {
sk_log ("Le message de $mail_exp à $mail_dest a été refusée par le serveur.(erreur 500 ou 550)");
return 'Erreur lors de l\'envoi de l\'Email<br>';
}
else return 'Email envoyé';
}
?>
Fonction permettant les logs
Code : PHP<?php
function error ($phrase, $req = NULL, $die= false){
$fichier = fopen('.htlog', 'a');
$texte = date('\L\e d/m/Y à (H:i:s)'). ' : '. $phrase. "\r\n";
$texte .= "\t\t\t ". $req. "\r\n";
fwrite($fichier, $texte);
fclose($fichier);
$this-> log_error[]= $phrase . '<br />';
if($die) die('<pre>'.print_r ($this-> log_error). '</pre>');
}
?>
Ceci n'est pas une signature
|
 Groupe : Membres
|
Petite astuce qui vous permet de remplacer tous les caractères spéciaux d'une chaîne par un underscore (notamment utile pour le traitement des noms de fichiers)
Code : PHP$nom_fichier = strtolower($_FILES['file']['name']);
$nom_fichier= str_replace(array('ä', 'ê', 'ë', 'ô', 'î', 'ï', 'ô', 'ö', 'û', 'ü', 'ÿ', '€', '#', '+', '*', ' ', '\'', '"', '²', '&', 'é', '~', '"', '{', '(', '[', '|', 'è', '`', 'ç', '^', 'à', 'à', ')', '}', '=', '}', '^', '$', '£', '¤', 'ù', '%', '*', 'µ', ',', '?', ';', ':', '/', '!', '§', '>', '<'), '_', $nom_fichier);
Édité
le 02/02/2006 à 20:54:50
par Eron Xeo
|
 Groupe : Membres
|
Gestion des erreurs mysql et décompte du nombre de requêtes
Code : PHPfunction requete ($variable= 1)
{
static $nombre_de_requetes;
if($variable != 1)
{
$result = mysql_query($variable)
or die("<strong><em>DEBUG MOD : Erreur n°".mysql_errno (). "<br />Requête Invalide :</em></strong> $variable<br /><strong><em>Erreur :</em></strong> ".mysql_error (). " à la ligne ".__LINE__ );
$nombre_de_requetes++;
return $result;
exit;
}
else return $nombre_de_requetes;
}
Cette fonction prend pour argument la requête sql et gère les erreurs. Appelée sans argument, la fonction retourne le nombre de requêtes réjà exécutées.
Édité
le 02/02/2006 à 20:36:06
par Quadehar
Libre Pensée - Blog regroupant des histoires et nouvelles rédigées par mes soins.
|
 Groupe : Membres
|
une astuce pour récupérer l'extension d'une image (système upload)
Code : PHP
$path = 'fichier.jpg';
$ext = substr($path, - 3, 3);
echo $ext; // ca affiche jpg
Édité
le 04/02/2006 à 19:50:04
par kamalito
|
 Groupe : Membres
|
Citation : ArnaudFonction extention, retourne l'extention de la chaine :
Code : PHP
<?php
// Une fonction qui determine l'extention de n'importe-quel fichier / url...
function extention ($ext)
{
$ext = substr($ext, strrpos($ext, ".")+ 1);
return $ext;
}
echo extention ("uploads/fichiers/fichier.arnaud.gz");
// Imprime gz
?>
Il y a mieux :
Code : PHP<?php
function get_ext ($filename)
{
return strrchr($filename, '.');
}
echo get_ext ('npimpeoqw.fopkewpfojaàfueo3k él43.fgreéf.e.png'); // .png
?>
-={ Nyro Xeo }=-
|
lala
 Groupe : Membres
|
Fonction sdzv3 qui retourne un array avec les pages à afficher (ex : array(1,2,3,4,'...',45,46,47,48))
$page est la page courante
$nb_page le nombre de pages totales
$nb le nombre de page à retourner à droite et à gauche (uhm, $nb = 4 dans mon exemple juste au dessus)
Code : PHP<?php
function get_list_page ($page, $nb_page, $nb = 4)
{
$list_page = array();
for ($i= 1; $i <= $nb_page; $i++ )
{
if (($i < $nb) OR ($i > $nb_page - $nb) OR (($i < $page + $nb) AND ($i > $page - $nb)))
$list_page[] = $i;
else
{
if ($i >= $nb AND $i <= $page - $nb)
$i = $page - $nb;
elseif ($i >= $page + $nb AND $i <= $nb_page - $nb)
$i = $nb_page - $nb;
$list_page[] = '...';
}
}
return $list_page;
}
Édité
le 02/02/2006 à 22:04:48
par winzou
c  c
|
Réfléchissez !
 Groupe : Membres
|
Fonction pour écrire l'heure
Code : PHPfunction ecrireheure ($timestamp)
{$heure= getdate($timestamp);
echo $heure["mday"]. '-'. $heure["mon"]. '-'. $heure["year"]. ' à '. $heure["hours"]. 'h'. $heure["minutes"]. 'min'; }
A modifier selon l'affichage, nécessite un timestamp
Fonction d'authentification "simple"
Code : PHPfunction authentification ($pseudo, $MDP)
{if(! empty($pseudo) && ! empty($MDP))
{$temp= mysql_query("Select * from membre where pseudo='$pseudo' and MDP='$MDP'");
while($resultat= mysql_fetch_array($temp))
{if ($pseudo== $resultat[pseudo ] && $MDP== $resultat[MDP ])
{$_SESSION[pseudo ]= $pseudo ;
$_SESSION[autho ]= "ok" ;
global $authentification ;
$authentification= "ok" ; }
else
{echo "Vous n'êtes pas inscrits ou votre pseudo et votre mot de passe ne sont pas corrects.<br/>" ; }}}
elseif($_SESSION[autho ]== "ok")
{global $authentification ;
$authentification= "ok" ; }
else
{if(empty($pseudo) && empty($MDP))
{echo "Vous n'avez pas rempli les champs pseudo et mot de passe.<br/>" ; }
elseif(empty($pseudo))
{echo "Vous n'avez pas spécifié de pseudo.<br/>" ; }
elseif(empty($MDP))
{echo "Vous n'avez pas spécifié de mot de passe.<br/>" ; }
}
}
Nécessite une table membre avec au moins les colonnes pseudo et MDP. Renvoit la variable $authentification qu'il suffit de tester par la suite
Green Searches, 1ère bêta. Pourquoi faire des recherches de façon écologique devrait-il se réduire à des recherches web. Green Searches vous permet aussi de faire des recherches d'images, de vidéos (à venir), de livres, dans les actualités ....
Je cherche des petit trucs à faire contre petite rémunération (traduction, codage de script, graphisme, ... ) Plus de détails => me contacter
What I can do
|
SQL Beginner ...
 Groupe : Membres
|
Citation : winzouFonction sdzv3 qui retourne un array avec les pages à afficher (ex : array(1,2,3,4,'...',45,46,47,48))
$page est la page courante
$nb_page le nombre de pages totales
$nb le nombre de page à retourner à droite et à gauche (uhm, $nb = 4 dans mon exemple juste au dessus)
Code : PHP<?php
function get_list_page ($page, $nb_page, $nb = 4)
{
$list_page = array();
for ($i= 1; $i <= $nb_page; $i++ )
{
if (($i < $nb) OR ($i > $nb_page - $nb) OR (($i < $page + $nb) AND ($i > $page - $nb)))
$list_page[] = $i;
else
{
if ($i >= $nb AND $i <= $page - $nb)
$i = $page - $nb;
elseif ($i >= $page + $nb AND $i <= $nb_page - $nb)
$i = $nb_page - $nb;
$list_page[] = '...';
}
}
return $list_page;
}
Ce qui me permet de voir que si on met une page qui n'existe pas encore, on a une belle erreur
Moi je fais toujours la vérif après: S'il y a 150 pages et que quelqu'un essaie d'afficher la 246, j'affiche quand même la 150
PS: Je déteste afficher des messages d'erreur à mes visiteurs quand ce n'est pas nécessaire: c'est une perte de temps pour eux, et pour mon serveur
|
 Groupe : Membres
|
Salut
Fonction qui met une majuscule a un mot
Code : PHPfunction majusc ($mot)
{
$mot_majuscule = strtoupper($mot); //ABCDE
$new_chaine = chunk_split($mot_majuscule, 1, " "); //A B C D E
$array = explode(" ", $new_chaine);
$nbr = 1;
While(isset($array[$nbr]))
{
$array[$nbr] = strtolower($array[$nbr]);
$nbr++; // 6 a la fin
}
$nbr_lettres = $nbr - 1;
$new_nbr = 0;
While($new_nbr < $nbr_lettres)
{
if ($new_nbr == 0){ $mot_nouveau = $array[0]; }
else { $mot_nouveau .= $array[$new_nbr]; }
$new_nbr++;
}
return $mot_nouveau;
}
Fonction qui recupere la premier lettre d'un mot
Code : PHPfunction prmslettre ($mot)
{
$new_chaine = chunk_split($mot, 1, " ");
$lettre = explode(" ", $new_chaine);
return $lettre[0];
}
Je sais pas si elles vont servir a grand monde
la perfection s'exprime par 3 choses, le tiramisu, les crumbles, et le grain de riz
|
 Groupe : Membres
|
Citation : D@nnySalut
Fonction qui met une majuscule a un mot
Code : PHPfunction majusc ($mot)
{
$mot_majuscule = strtoupper($mot); //ABCDE
$new_chaine = chunk_split($mot_majuscule, 1, " "); //A B C D E
$array = explode(" ", $new_chaine);
$nbr = 1;
While(isset($array[$nbr]))
{
$array[$nbr] = strtolower($array[$nbr]);
$nbr++; // 6 a la fin
}
$nbr_lettres = $nbr - 1;
$new_nbr = 0;
While($new_nbr < $nbr_lettres)
{
if ($new_nbr == 0){ $mot_nouveau = $array[0]; }
else { $mot_nouveau .= $array[$new_nbr]; }
$new_nbr++;
}
return $mot_nouveau;
}
Euh... ucfirst(), non ?
C cay cool, Caml cay cool
|
 Groupe : Membres
|
Citation : D@nny
Fonction qui recupere la premier lettre d'un mot
Code : PHPfunction prmslettre ($mot)
{
$new_chaine = chunk_split($mot, 1, " ");
$lettre = explode(" ", $new_chaine);
return $lettre[0];
}
Je sais pas si elles vont servir a grand monde
Je pense qu'il y a plus simple : $mot[0], ca suffit pas?
|
Up the Irons!
 Groupe : Membres
|
Citation : Eron XeoPetite astuce qui vous permet de remplacer tous les caractères spéciaux d'une chaîne par un underscore (notamment utile pour le traitement des noms de fichiers)
Code : PHP$nom_fichier = strtolower($_FILES['file']['name']);
$nom_fichier= str_replace(array('ä', 'ê', 'ë', 'ô', 'î', 'ï', 'ô', 'ö', 'û', 'ü', 'ÿ', '€', '#', '+', '*', ' ', '\'', '"', '²', '&', 'é', '~', '"', '{', '(', '[', '|', 'è', '`', 'ç', '^', 'à', 'à', ')', '}', '=', '}', '^', '$', '£', '¤', 'ù', '%', '*', 'µ', ',', '?', ';', ':', '/', '!', '§', '>', '<'), '_', $nom_fichier);
Mouais, vraiment peu utile, moi je fais ã, õ, ▓ ou n'importe quoi d'autre, donc franchement, ça sert un peu à rien.
Pour une fois, dans ce cas là, les regex sont préférables je trouve.
|
 Groupe : Membres
|
Une fonction pour des chaines aléatoires
Genere aussi des chaines prononcables :
Code : PHP
function chaineAleatoire ($type = "alphanumerique", $nombre = 6)
{
$chaine = '';
switch($type)
{
case "alphabetique":
$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
break;
case "alphanumerique":
$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
break;
case "numerique":
$caracteres = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '0');
break;
case "prononcable":
$voyelles = array('a', 'e', 'i', 'o', 'u', 'ou', 'io', 'ou', 'ai');
$consonnes = array('b', 'c', 'd', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'r', 's', 't', 'v', 'w',
'tr', 'cr', 'fr', 'dr', 'pr', 'vr', 'ch', 'ph', 'sl', 'cl');
break;
default:
$caracteres = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
break;
}
if($type != 'prononcable')
{
$nombreCle = count($caracteres) - 1;
// On va choisir un caractere au hasard
for($i = 0; $i < $nombre ; $i++ )
{
$cle = mt_rand(0, $nombreCle);
$chaine .= $caracteres[$cle];
}
return $chaine;
}
else
{
$nombreVoyelle = count($voyelles) - 1;
$nombreConsonne = count($consonnes) - 1;
for($i = 0; $i < $nombre; $i++ )
{
if($i % 2) // Une fois sur deux
{
$cle = mt_rand(0, $nombreVoyelle);
$chaine .= $voyelles[$cle];
}
else
{
$cle = mt_rand(0, $nombreConsonne);
$chaine .= $consonnes[$cle];
}
}
$chaine = substr($chaine, 0, $nombre);
return $chaine;
}
}
Genere des images de verification :
A associer avec la fonction de chaine aléatoires :
Code : PHP
function image ($chaine)
{
global $session_id;
$largeur = (strlen($chaine) * 10);
$hauteur = 20;
$image = imagecreate ($largeur, $hauteur);
$blanc = imagecolorallocate ($image, 255, 255, 255);
$noir = imagecolorallocate ($image, 0, 0, 0);
$milieuHauteur = ($hauteur / 2) - 8;
imagestring ($image, 6, (strlen($chaine) / 2 ), $milieuHauteur, $chaine, $noir);
ImageRectangle ($image, 1, 1, $largeur - 1, $hauteur - 1, $noir);
ImageLine ($image, 2, $milieuHauteur + 8, $largeur - 2, $milieuHauteur + 8, $noir);
imagepng ($image);
}
On peut la lancer comme cela ( avec la fonction plus haut )
Code : PHP
$chaine = chaineAleatoire();
image($chaine);
|
SiteDesZacros Groupe : Membres
|
Voici quelque fonctions que j'utilise souvent :
Redirection toute simple :
Code : PHP
<?php
function red ($url, $time)
{
echo '<script type="text/javascript">window.setTimeout("location=(\''. $url. '\');",'. $time. ')</script>';
}
?>
Vérification de pseudo/mdp :
Code : PHP
<?php
function verifconnec ($pseudo, $mdp)
{
$requet = mysql_query("select pseudo from membres where pseudo='". $pseudo. "' AND mdp='". $mdp. "'");
$nb = mysql_numrows($requet);
if($nb >= 1)
{
return 'ok';
}
}
?>
Include dynamique sécurisé contre l'include externe :
Code : PHP
<?php
function include2 ($name)
{
if(file_exists('./'. $name))
{
include('./'. $name);
}
else
{
echo 'Fichier '. $name. ' inexistant.';
}
}
?>
"Scanner" un dossier :
Code : PHP
<?php
function aff ($var)
{
$var = $var. '/';
if($openvar = @ opendir($var))
{
while (false !== ($file = @ readdir($openvar)))
{
if(! file_exists($var. $file. $filepreuve. '.txt'))
{
if(is_dir($var. $file))
{
echo '<hr><br><br> - [doc] '. $var. $file. '<br>';
}
if(strstr($file, '.'. $ext[$i]))
{
echo '<br> - [file] '. $var. $file;
}
}
}
}
}
aff ('.');
?>
Pour le fan de rpg : (barre de vie avec dégradé)
Code : PHP
<?php
header ("Content-type: image/png");
$image = imagecreate (127, 17) or die ("Erreur lors de la création de l'image");
$hp_max = $_GET['hpmax'];
$hp_hero = $_GET['hp'];
$lignes = 17;
$lignes_colorees = 1;
$couleur_fond = ImageColorAllocate ($image, 0, 0, 0);
$blanc = imagecolorallocate ($image, 255, 255, 255);
if($_GET['auto'] == 'ok')
{
if($hp_hero >= $hp_max)
{
$b = 255;
$v = 255;
$r = 255;
}
elseif($hp_hero >= ceil(ceil($hp_max/ 5)* 4))
{
$b = 255;
$v = 0;
$r = 0 |