выдача штрих кода

Discussion in 'PHP' started by Алекс диГриз, 16 Jun 2008.

  1. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    Ищу скрипт, который будет каждому зарегистрированному пользователю давать Штрих код, с буквенным\цифровым кодом (любым).
     
  2. DoDo

    DoDo Banned

    Joined:
    12 Jun 2008
    Messages:
    37
    Likes Received:
    20
    Reputations:
    4
    продавать пользователей собрался в маркете?
     
  3. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    да не))
    так есть такой вообще скрипт?
     
  4. FeraS

    FeraS Elder - Старейшина

    Joined:
    19 Jan 2007
    Messages:
    555
    Likes Received:
    420
    Reputations:
    76
    Можно взять картинку штриха (без цифр) и скрептом генерить на картинку цифры и выдавать уже юзерам. Но это все надо писать)
     
  5. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    не, скрипт И сам штрих код должен генерить
     
  6. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    не, скрипт И сам штрих код должен генерить каждому новому пользователю зареганному

    вот скрипт достал один
    PHP:
    <?php
    /*=============================================================================*/


    //-----------------------------------------------------------------------------
    // Startup code
    //-----------------------------------------------------------------------------


    if(isset($_GET["text"])) $text=$_GET["text"];
    if(isset(
    $_GET["format"])) $format=$_GET["format"];
    if(isset(
    $_GET["quality"])) $quality=$_GET["quality"];
    if(isset(
    $_GET["width"])) $width=$_GET["width"];
    if(isset(
    $_GET["height"])) $height=$_GET["height"];
    if(isset(
    $_GET["type"])) $type=$_GET["type"];
    if(isset(
    $_GET["barcode"])) $barcode=$_GET["barcode"];




    if (!isset (
    $text)) $text 1;
    if (!isset (
    $type)) $type 1;
    if (empty (
    $quality)) $quality 100;
    if (empty (
    $width)) $width 160;
    if (empty (
    $height)) $height 80;
    if (!empty (
    $format)) $format strtoupper ($format);
            else 
    $format="PNG";


    switch (
    $type)
    {
            default:
                    
    $type 1;
            case 
    1:
                    
    Barcode39 ($barcode$width$height$quality$format$text);
                    break;          
    }


    //-----------------------------------------------------------------------------
    // Generate a Code 3 of 9 barcode
    //-----------------------------------------------------------------------------
    function Barcode39 ($barcode$width$height$quality$format$text)
    {
            switch (
    $format)
            {
                    default:
                            
    $format "JPEG";
                    case 
    "JPEG"
                            
    header ("Content-type: image/jpeg");
                            break;
                    case 
    "PNG":
                            
    header ("Content-type: image/png");
                            break;
                    case 
    "GIF":
                            
    header ("Content-type: image/gif");
                            break;
            }


            
    $im ImageCreate ($width$height)
        or die (
    "Cannot Initialize new GD image stream");
            
    $White ImageColorAllocate ($im255255255);
            
    $Black ImageColorAllocate ($im000);
            
    //ImageColorTransparent ($im, $White);
            
    ImageInterLace ($im1);



            
    $NarrowRatio 20;
            
    $WideRatio 55;
            
    $QuietRatio 35;


            
    $nChars = (strlen($barcode)+2) * (($NarrowRatio) + ($WideRatio) + ($QuietRatio));
            
    $Pixels $width $nChars;
            
    $NarrowBar = (int)(20 $Pixels);
            
    $WideBar = (int)(55 $Pixels);
            
    $QuietBar = (int)(35 $Pixels);


            
    $ActualWidth = (($NarrowBar 6) + ($WideBar*3) + $QuietBar) * (strlen ($barcode)+2);
            
            if ((
    $NarrowBar == 0) || ($NarrowBar == $WideBar) || ($NarrowBar == $QuietBar) || ($WideBar == 0) || ($WideBar == $QuietBar) || ($QuietBar == 0))
            {
                    
    ImageString ($im100"Image is too small!"$Black);
                    
    OutputImage ($im$format$quality);
                    exit;
            }
            
            
    $CurrentBarX = (int)(($width $ActualWidth) / 2);
            
    $Color $White;
            
    $BarcodeFull "*".strtoupper ($barcode)."*";
            
    settype ($BarcodeFull"string");
            
            
    $FontNum 3;
            
    $FontHeight ImageFontHeight ($FontNum);
            
    $FontWidth ImageFontWidth ($FontNum);
            if (
    $text != 0)
            {
                    
    $CenterLoc = (int)(($width-1) / 2) - (int)(($FontWidth strlen($BarcodeFull)) / 2);
                    
    ImageString ($im$FontNum$CenterLoc$height-$FontHeight"$BarcodeFull"$Black);
            }
            else
            {
                
    $FontHeight=-2;
            }


            for (
    $i=0$i<strlen($BarcodeFull); $i++)
            {
                    
    $StripeCode Code39 ($BarcodeFull[$i]);


                    for (
    $n=0$n 9$n++)
                    {
                            if (
    $Color == $White$Color $Black;
                            else 
    $Color $White;


                            switch (
    $StripeCode[$n])
                            {
                                    case 
    '0':
                                            
    ImageFilledRectangle ($im$CurrentBarX0$CurrentBarX+$NarrowBar$height-1-$FontHeight-2$Color);
                                            
    $CurrentBarX += $NarrowBar;
                                            break;


                                    case 
    '1':
                                            
    ImageFilledRectangle ($im$CurrentBarX0$CurrentBarX+$WideBar$height-1-$FontHeight-2$Color);
                                            
    $CurrentBarX += $WideBar;
                                            break;
                            }
                    }


                    
    $Color $White;
                    
    ImageFilledRectangle ($im$CurrentBarX0$CurrentBarX+$QuietBar$height-1-$FontHeight-2$Color);
                    
    $CurrentBarX += $QuietBar;
            }


            
    OutputImage ($im$format$quality);
    }


    //-----------------------------------------------------------------------------
    // Output an image to the browser
    //-----------------------------------------------------------------------------
    function OutputImage ($im$format$quality)
    {
            switch (
    $format)
            {
                    case 
    "JPEG"
                            
    ImageJPEG ($im""$quality);
                            break;
                    case 
    "PNG":
                            
    ImagePNG ($im);
                            break;
                    case 
    "GIF":
                            
    ImageGIF ($im);
                            break;
            }
    }


    //-----------------------------------------------------------------------------
    // Returns the Code 3 of 9 value for a given ASCII character
    //-----------------------------------------------------------------------------
    function Code39 ($Asc)
    {
            switch (
    $Asc)
            {
                    case 
    ' ':
                            return 
    "011000100";     
                    case 
    '$':
                            return 
    "010101000";             
                    case 
    '%':
                            return 
    "000101010"
                    case 
    '*':
                            return 
    "010010100"// * Start/Stop
                    
    case '+':
                            return 
    "010001010"
                    case 
    '|':
                            return 
    "010000101"
                    case 
    '.':
                            return 
    "110000100"
                    case 
    '/':
                            return 
    "010100010"
                    case 
    '-':
                            return 
    "010000101";
                    case 
    '0':
                            return 
    "000110100"
                    case 
    '1':
                            return 
    "100100001"
                    case 
    '2':
                            return 
    "001100001"
                    case 
    '3':
                            return 
    "101100000"
                    case 
    '4':
                            return 
    "000110001"
                    case 
    '5':
                            return 
    "100110000"
                    case 
    '6':
                            return 
    "001110000"
                    case 
    '7':
                            return 
    "000100101"
                    case 
    '8':
                            return 
    "100100100"
                    case 
    '9':
                            return 
    "001100100"
                    case 
    'A':
                            return 
    "100001001"
                    case 
    'B':
                            return 
    "001001001"
                    case 
    'C':
                            return 
    "101001000";
                    case 
    'D':
                            return 
    "000011001";
                    case 
    'E':
                            return 
    "100011000";
                    case 
    'F':
                            return 
    "001011000";
                    case 
    'G':
                            return 
    "000001101";
                    case 
    'H':
                            return 
    "100001100";
                    case 
    'I':
                            return 
    "001001100";
                    case 
    'J':
                            return 
    "000011100";
                    case 
    'K':
                            return 
    "100000011";
                    case 
    'L':
                            return 
    "001000011";
                    case 
    'M':
                            return 
    "101000010";
                    case 
    'N':
                            return 
    "000010011";
                    case 
    'O':
                            return 
    "100010010";
                    case 
    'P':
                            return 
    "001010010";
                    case 
    'Q':
                            return 
    "000000111";
                    case 
    'R':
                            return 
    "100000110";
                    case 
    'S':
                            return 
    "001000110";
                    case 
    'T':
                            return 
    "000010110";
                    case 
    'U':
                            return 
    "110000001";
                    case 
    'V':
                            return 
    "011000001";
                    case 
    'W':
                            return 
    "111000000";
                    case 
    'X':
                            return 
    "010010001";
                    case 
    'Y':
                            return 
    "110010000";
                    case 
    'Z':
                            return 
    "011010000";
                    default:
                            return 
    "011000100"
            }
    }


    ?>


    можноли его строить использовать?
     
    #6 Алекс диГриз, 16 Jun 2008
    Last edited: 16 Jun 2008
    2 people like this.
  7. DoDo

    DoDo Banned

    Joined:
    12 Jun 2008
    Messages:
    37
    Likes Received:
    20
    Reputations:
    4
    какбе да
     
    1 person likes this.
  8. YoYo Factory

    YoYo Factory Elder - Старейшина

    Joined:
    24 Mar 2008
    Messages:
    108
    Likes Received:
    79
    Reputations:
    -5
    1 person likes this.
  9. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    В дельфе есть компонент который создает любые штрихкоды. Если сервак под виндой, то можно заюзать прогу.
     
  10. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    благодарю! а как выбранный Скрипт, настроить так чтобы каждому зарегистрированному пользователю выдавал штрих код с обычным кодом? вот тот скрипт который я выложил, он генерит штрих код от введённого слова, можно ли сделать так чтобы от Зарегистрированного Ника пользователя, сгенерился ему в аккаунт тот штрих код?
     
    #10 Алекс диГриз, 16 Jun 2008
    Last edited: 16 Jun 2008
  11. bublebuble

    bublebuble Elder - Старейшина

    Joined:
    15 Sep 2007
    Messages:
    102
    Likes Received:
    28
    Reputations:
    0
    ну к примеру дописать скрипт регистрации и при регене добавлять в базу данных юзеров в таблицу новый столбец со сгенерированным кодом, задать этот код как переменную $уникальный код и потом на странице сайта в разделе своего профиля выдавать типа "ваш уникальный код:" и там картинка которая идёт как http://www.site.ru/generator.php?name=$уникальный код вот вроде бы и всё ;)
     
  12. Алекс диГриз

    Алекс диГриз Elder - Старейшина

    Joined:
    6 May 2008
    Messages:
    71
    Likes Received:
    15
    Reputations:
    0
    Вот, то что надо! Именно!
    При регистрации, пользователь сможет ввести ник не более скажем 8 символов.
    С этого ника ему сгенерируется штрих корд в личный профиль!

    по поводу http://www.site.ru/generator.php?name=$уникальный код
    я предлагаю просто сделать так
    http://site.ru/userid=30a51d648f557d43146b5c261b8081ba (к примеру)
    где 30a51d648f557d43146b5c261b8081ba либо личный код либо код зашифрованный в МД5 так как всётаки безопасность сайта одна из главных задач
    Без generator.php так как это будет сразу мазолить глаза плохим дядькам и они заинтересуются generator.php и будут лазить куда попало
     
  13. bublebuble

    bublebuble Elder - Старейшина

    Joined:
    15 Sep 2007
    Messages:
    102
    Likes Received:
    28
    Reputations:
    0
    да мне кажется достаточно просто уникального кода, а так если подумать снифер в руки и уникальный код уже есть :)