Code bare!!!

Description

Je créé un code barre a 8 chiffres de manière entièrement aléatoire! je ne génère plus ce code en fonction de la date.

Source / Exemple :


<?php
$prefixe   = $_GET['pre'];
$numero    = $_GET['num'];
$digit     = $_GET['dig'];
$codebarre = $prefixe.''.$numero.''.$digit;
  //  création de l'image

header ("Content-type: image/png");
$image = imagecreate(134,70);

  //  Définition des couleur dont le blanc est sélectionnée comme couleur de fond

$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);

  //  Calcul de la valeur binaire du code sur 2 set
  //  Les 4 premier chiffre sur le set A
  //  Puis les 4 dernier sur le C

$i=0;
while ( $i <8 ) {

  //  Découpage de la chaine

if ( $i < 4 ) {
$chiffre_set_A = substr($codebarre,$i, 1);
}
if ( $i > 3 ) {
$chiffre_set_C = substr($codebarre,$i, 1);
}

  //  Calcul de la valeur 
  //  Merci à schtroumf sur PHPCS pour son information!

switch ( $chiffre_set_A ) {
case '0';
$val = '0001101';
break;
case '1';
$val = '0011001';
break;
case '2';
$val = '0010011';
break;
case '3';
$val = '0111101';
break;
case '4';
$val = '0100011';
break;
case '5';
$val = '0110001';
break;
case '6';
$val = '0101111';
break;
case '7';
$val = '0111011';
break;
case '8';
$val = '0110111';
break;
case '9';
$val = '0001011';
break;
}
switch ( $chiffre_set_C ) {
case '0';
$val = '1110010';
break;
case '1';
$val = '1100110';
break;
case '2';
$val = '1101100';
break;
case '3';
$val = '1000010';
break;
case '4';
$val = '1011100';
break;
case '5';
$val = '1001110';
break;
case '6';
$val = '1010000';
break;
case '7';
$val = '1000100';
break;
case '8';
$val = '1001000';
break;
case '9';
$val = '1110100';
break;
}

  //  inscription de la traduction sur une variable $total

if ( $i == 0 ) {
$total .= '101'.$val;
}
else if ( $i == 4 ) {
$total .= '01010'.$val;
}
else if ( $i == 7 ) {
$total .= $val.'101';
}
else {
$total .= $val;
}
$i++;
}

  //  On compte le nombre de caractère

$count = strlen($total);

  //  Ce nombre doit être égale a 67 pour un code barre EAN8

if ( $count == 67 ) {
$j=0;

  //  Puis on déscine barre par barre

while ( $j < $count ) {

  //  Dabord on découpe la variable $total octet par octet

$barre = substr($total,$j, 1);

  //  Variables d'adaptation des barres

$m = $j*2;
$n = $m+2;

  //  Si les octets sont des séparateurs leurs hauteur est de 60
  //  sinon la hauteur des barres est de 50

if ( $j <=2 ) {
$hauteur = 60;
}
else if ( $j >31 AND $j < 37 ) {
$hauteur = 60;
}
else if ( $j > 63 ) {
$hauteur = 60;
}
else {
$hauteur = 50;
}

  //  Si $barre = 1 alors on dessinne une barre noir
  //  Sinon une barre blanche

if ( $barre == 1 ) {
$coul = $noir;
}
else {
$coul = $blanc;
}
ImageFilledRectangle ($image, $m, 0, $n, $hauteur, $coul);
$j++;
}

  //  Correction des erreurs de séparateurs

ImageFilledRectangle ($image, 6, 51, 62, 70, $blanc);
ImageFilledRectangle ($image, 74, 51, 100, 70, $blanc);
}

  //  On découpe ensuite le code en deux

$code1 = substr($codebarre,0, 4);
$code2 = substr($codebarre,4, 4);

  //  On l'inscrit sur notre image
imagestring($image, 8, 16, 52, $code1, $noir);
imagestring($image, 8, 84, 52, $code2, $noir);

imagepng($image);
?>

Conclusion :


Dite moi ce que vous en pensez!
Je sait que je ne respecte pas les normes W3C Mais ce n'est qu'un exemple pour l'insérer dans un texte parceque sinon ca ne marche pas!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (toutoos)