Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП: код вызывает ошибку, unexpected T_STRING 
V
    Опции темы
NNaarreekk
Дата 23.12.2007, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Код

<?PHP
class Button
{
    private $image;
    public function __construct($width, $height, $label, $font)
    {
        $this -> image = imagecreate($width, $height);
        $colorBody = imagecolorallocate($this -> image, 0x99, 0x99, 0x99);
        $colorShadow = imagecolorallocate($this -> image, 0x33, 0x33, 0x33);
        $colorHighlight = imagecolorallocate($this -> image, 0xCC, 0xCC, 0xCC);

        imagefilledrectangle($this -> image, 1, 1, $width-2, $height-2, $colorBody);
        imageline($this -> image, 0, $height-1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, $width-1, 1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, 0, 0, $width-1, 0, $colorHighlight);
        imageline($this -> image, 0, 0, 0, $height-2, $colorHighlight);

        $labelHeight = imagefontheight($font);
        $labelWidth = imagefontwidth($font)*strlen($label);
        $labelX = ($width - $labelWidth)/2;
        $labelY = ($height - $labelHeight)/2;
        imagestring($this -> image, $font, $labelX+1, $labelY+1, $label, $colorShadow);
        imagestring($this -> image, $font, $labelX, $labelY, $label, $colorHighlight);
    }
    public function drawPNG(){
        header("Content-type: image/png");
        imagepng($this -> image);
    }
    public function drawJPEG(){
        header("Content-type: image/jpeg");
        imagejpeg($this -> image);
    }
}
if(!isset($_REQUEST['width']))$_REQUEST['width'] = 100;
if(!isset($_REQUEST['height']))$_REQUEST['height'] = 30;
if(!isset($_REQUEST['label']))$_REQUEST['label'] = mt_rand(10000, 99999);
if(!isset($_REQUEST['font']))$_REQUEST['font'] = 5;

$b = new Button ($_REQUEST['width'], $_REQUEST['height'], $_REQUEST['label'], $_REQUEST['font']);
$b -> drawPNG();
?>


В книге нашел такой код!
Дает ошибку
Цитата

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in d:\appserv\www\forum\createnums.php on line 4


В чем проблема????

 ! 
skyboy
Каждому вопросу - отдельную тему. С вменяемым названием.


Это сообщение отредактировал(а) skyboy - 23.12.2007, 15:47
PM MAIL WWW   Вверх
gta4kv
Дата 23.12.2007, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



У меня все нормально:

http://89.169.190.239/test.php

Вот ваш код в действии.

Это сообщение отредактировал(а) gta4kv - 23.12.2007, 17:34
PM MAIL   Вверх
flashaa
Дата 23.12.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(NNaarreekk @  23.12.2007,  15:31 Найти цитируемый пост)
private $image;

Судя по всему версия PHP 4.х, модификатор private введен только в PHP5.

По поводу ф-ции - http://ru2.php.net/manual/ru/function.strip-tags.php
PM MAIL   Вверх
gta4kv
Дата 23.12.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Да кстати, ИМХО использовать лучше $b->drawJpeg(); ( причем установить ему низкой качество ) ибо качество картинки становиться ниже, и текст опознается ботами хуже. хотя может это и бред %)

upd

Немного модифицировал этот скрипт:

Код

<?PHP
class Button
{
    var $image;
    public function __construct($width, $height, $label, $font)
    {
        $this -> image = imagecreate($width, $height);
        $colorBody = imagecolorallocate($this -> image, 0x99, 0x99, 0x99);
        $colorShadow = imagecolorallocate($this -> image, 0x33, 0x33, 0x33);
        $colorHighlight = imagecolorallocate($this -> image, 0xCC, 0xCC, 0xCC);
        $colorBalck = imagecolorallocate( $this->image, 0, 0, 0 );
        
        imagefilledrectangle($this -> image, 1, 1, $width-2, $height-2, $colorBody);
        imageline($this -> image, 0, $height-1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, $width-1, 1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, 0, 0, $width-1, 0, $colorHighlight);
        imageline($this -> image, 0, 0, 0, $height-2, $colorHighlight);
        imageline( $this->image, imagesx( $this->image ), 0, 0, imagesy( $this->image ), $colorBalck );
        $labelHeight = imagefontheight($font);
        $labelWidth = imagefontwidth($font)*strlen($label);
        $labelX = ($width - $labelWidth)/2;
        $labelY = ($height - $labelHeight)/2;
        imagestring($this -> image, $font, $labelX+1, $labelY+1, $label, $colorShadow);
        imagestring($this -> image, $font, $labelX, $labelY, $label, $colorHighlight);
        imageline( $this->image, 0, 1, imagesx( $this->image ) , imagesy( $this->image ), $colorBalck );
        
        return $label;
    }
    
    public function drawPNG()
    {
        header("Content-type: image/png");
        imagepng($this -> image);
    }
    public function drawJPEG()
    {
        header("Content-type: image/jpeg");
        imagejpeg($this -> image, '', 80 );
    }
    public function drawGIF()
    {
        header("Content-type: image/gif");
        imagegif($this -> image);
    }
}
$alphavit = 'qwertyuiopasdfghjklzxcvbnm';

for( $i = 0; $i<6; $i++) 
{
    $word .= $alphavit{ rand(0, strlen( $alphavit )-1 ) };
}

$b = new Button ( '100', '30', $word, 4     );
$b->drawJpeg();
?>


Это сообщение отредактировал(а) gta4kv - 23.12.2007, 16:10
PM MAIL   Вверх
flashaa
Дата 23.12.2007, 17:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



gta4kv, public в PHP 4.х так же как и private нет. 
PM MAIL   Вверх
gta4kv
Дата 23.12.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



flashaa, я как бы не правил пример под PHP 4.

Вот под PHP 4:

Код

<?PHP
class Button
{
    var $image;
    function __construct($width, $height, $label, $font)
    {
        $this -> image = imagecreate($width, $height);
        $colorBody = imagecolorallocate($this -> image, 0x99, 0x99, 0x99);
        $colorShadow = imagecolorallocate($this -> image, 0x33, 0x33, 0x33);
        $colorHighlight = imagecolorallocate($this -> image, 0xCC, 0xCC, 0xCC);
        $colorBalck = imagecolorallocate( $this->image, 0, 0, 0 );
        
        imagefilledrectangle($this -> image, 1, 1, $width-2, $height-2, $colorBody);
        imageline($this -> image, 0, $height-1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, $width-1, 1, $width-1, $height-1, $colorShadow);
        imageline($this -> image, 0, 0, $width-1, 0, $colorHighlight);
        imageline($this -> image, 0, 0, 0, $height-2, $colorHighlight);
        imageline( $this->image, imagesx( $this->image ), 0, 0, imagesy( $this->image ), $colorBalck );
        $labelHeight = imagefontheight($font);
        $labelWidth = imagefontwidth($font)*strlen($label);
        $labelX = ($width - $labelWidth)/2;
        $labelY = ($height - $labelHeight)/2;
        imagestring($this -> image, $font, $labelX+1, $labelY+1, $label, $colorShadow);
        imagestring($this -> image, $font, $labelX, $labelY, $label, $colorHighlight);
        imageline( $this->image, 0, 1, imagesx( $this->image ) , imagesy( $this->image ), $colorBalck );
        
        return $label;
    }
    
    function drawPNG()
    {
        header("Content-type: image/png");
        imagepng($this -> image);
    }
    function drawJPEG()
    {
        header("Content-type: image/jpeg");
        imagejpeg($this -> image, '', 80 );
    }
    function drawGIF()
    {
        header("Content-type: image/gif");
        imagegif($this -> image);
    }
}
$alphavit = 'qwertyuiopasdfghjklzxcvbnm';
for( $i = 0; $i<6; $i++) 
{
    $word .= $alphavit{ rand(0, strlen( $alphavit )-1 ) };
}
$b = new Button ( '100', '30', $word, 4     );
$b->drawJpeg();
?>

Немного доработал этот класс, получил более менее надежную капчу. 
http://89.169.190.239/project/captcha/?generate

Это сообщение отредактировал(а) gta4kv - 23.12.2007, 17:37
PM MAIL   Вверх
flashaa
Дата 23.12.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(gta4kv @  23.12.2007,  17:33 Найти цитируемый пост)
я как бы не правил

Почему тогда private исчезло и вместо него появилось var?  smile 
PM MAIL   Вверх
NNaarreekk
Дата 23.12.2007, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



gta4kv, а теперь дает:

Цитата

<b>Warning</b>:  imagejpeg(): supplied argument is not a valid Image resource in <b>d:\appserv\www\forum\createnums.php</b> on line <b>39</b><br />


Не пойму в чем дело smile 

Это сообщение отредактировал(а) NNaarreekk - 23.12.2007, 19:03
PM MAIL WWW   Вверх
gta4kv
Дата 23.12.2007, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Попробуй заменить ее на:

Код

   imagejpeg($this -> image );


Это сообщение отредактировал(а) gta4kv - 23.12.2007, 19:05
PM MAIL   Вверх
NNaarreekk
Дата 23.12.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Не а!

То же сомое:(
PM MAIL WWW   Вверх
gta4kv
Дата 23.12.2007, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Попробуйте тогда не $b->drawJpeg(); а $b->drawPNG();
PM MAIL   Вверх
NNaarreekk
Дата 23.12.2007, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



То же самое..
и с PNG и с GIF...

A тут: http://89.169.190.239/project/captcha/?generate

Тот же код что здесь?
PM MAIL WWW   Вверх
flashaa
Дата 23.12.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Для php4 также слово __construct ничего не говорит smile
Ваша картинка просто не создается... т.к.вызов  new не запускает __construct.
Переименуйте __construct в Button.
PM MAIL   Вверх
NNaarreekk
Дата 23.12.2007, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



А теперь Х показыват!
PM MAIL WWW   Вверх
gta4kv
Дата 23.12.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(NNaarreekk @ 23.12.2007,  19:12)
То же самое..
и с PNG и с GIF...

A тут: http://89.169.190.239/project/captcha/?generate

Тот же код что здесь?

За основу взят он ^_^. Там я переделал, скоро выложу ввиде статьи.. Если надо скину линк в личку потом.  smile 

Цитата

А теперь Х показыват! 


Прям "Х"?  smile 

ps. вы бы обновили AppServ, там же есть версия с PHP5. ;)

Это сообщение отредактировал(а) gta4kv - 23.12.2007, 19:19
PM MAIL   Вверх
NNaarreekk
Дата 23.12.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Все сработало smile  smile  smile 

Просто я там что-то лишнее написал!smile


gta4kvflashaa, спасибо!!!
PM MAIL WWW   Вверх
NNaarreekk
Дата 25.12.2007, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Люди, а теперь как достать эту случайную цифру???
PM MAIL WWW   Вверх
gta4kv
Дата 25.12.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(NNaarreekk @ 25.12.2007,  20:55)
Люди, а теперь как достать эту случайную цифру???

Я тебе в личку скинул ссылку, там ссылка на мою статью, там про это есть.
PM MAIL   Вверх
NNaarreekk
Дата 25.12.2007, 21:29 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 768
Регистрация: 23.6.2007
Где: Армения

Репутация: 0
Всего: 3



Теперь со спокойной душой закрываю тему!!! smile 
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.