Skip to content

Commit 041fed9

Browse files
author
s.perevoznyk
committed
Initial import
0 parents  commit 041fed9

File tree

296 files changed

+29120
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

296 files changed

+29120
-0
lines changed

DelphiFunctions.pas

+1,181
Large diffs are not rendered by default.
+278
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,278 @@
1+
{*******************************************************}
2+
{ PHP4Delphi }
3+
{ PHP - Delphi interface }
4+
{ Author: }
5+
{ Serhiy Perevoznyk }
6+
7+
{ http://users.chello.be/ws36637 }
8+
{*******************************************************}
9+
10+
{ $Id: php_jpeg.dpr,v 6.2 02/2006 delphi32 Exp $ }
11+
{$I PHP.INC}
12+
13+
library php_jpeg;
14+
15+
uses
16+
Windows, SysUtils, zendTypes, ZENDAPI, phpTypes, PHPAPI, jpeg, graphics,
17+
Classes;
18+
19+
20+
procedure Bmp2Jpg(ABitmap : TBitmap; AJpeg : TJpegImage);
21+
begin
22+
if not Assigned(ABitmap) then
23+
Exit;
24+
25+
if not Assigned(AJPeg) then
26+
Exit;
27+
28+
AJPeg.Assign(ABitmap);
29+
end;
30+
31+
function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
32+
begin
33+
Result := SUCCESS;
34+
end;
35+
36+
function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
37+
begin
38+
Result := SUCCESS;
39+
end;
40+
41+
procedure php_info_module(zend_module : Pzend_module_entry; TSRMLS_DC : pointer); cdecl;
42+
begin
43+
php_info_print_table_start();
44+
php_info_print_table_row(2, PChar('JPEG support'), PChar('enabled'));
45+
php_info_print_table_end();
46+
end;
47+
48+
function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
49+
begin
50+
RESULT := SUCCESS;
51+
end;
52+
53+
function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
54+
begin
55+
RESULT := SUCCESS;
56+
end;
57+
58+
{$IFDEF PHP510}
59+
procedure convert_bmp_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
60+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
61+
{$ELSE}
62+
procedure convert_bmp_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
63+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
64+
{$ENDIF}
65+
var
66+
bmpName : PChar;
67+
JpgName : PChar;
68+
param : pzval_array;
69+
Bitmap : TBitmap;
70+
Jpg : TJPEGImage;
71+
begin
72+
if ht <> 2 then
73+
begin
74+
zend_wrong_param_count(TSRMLS_DC);
75+
Exit;
76+
end;
77+
78+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
79+
begin
80+
zend_wrong_param_count(TSRMLS_DC);
81+
Exit;
82+
end;
83+
84+
bmpName := param[0]^.value.str.val;
85+
JpgName := param[1]^.value.str.val;
86+
dispose_pzval_array(param);
87+
88+
if not FileExists(bmpName) then
89+
begin
90+
ZVAL_FALSE(return_value);
91+
exit;
92+
end;
93+
94+
try
95+
BitMap := TBitmap.Create;
96+
Bitmap.LoadFromFile(bmpName);
97+
Jpg := TJPegImage.Create;
98+
Bmp2Jpg(Bitmap, Jpg);
99+
Jpg.SaveToFile(JpgName);
100+
ZVAL_TRUE(return_value);
101+
except
102+
ZVAL_FALSE(return_value);
103+
end;
104+
end;
105+
106+
107+
{$IFDEF PHP510}
108+
procedure show_bmp_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
109+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
110+
{$ELSE}
111+
procedure show_bmp_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
112+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
113+
{$ENDIF}
114+
var
115+
bmpName : PChar;
116+
param : pzval_array;
117+
Bitmap : TBitmap;
118+
Jpg : TJPEGImage;
119+
MS : TMemoryStream;
120+
_content_type : PChar;
121+
begin
122+
if ht <> 1 then
123+
begin
124+
zend_wrong_param_count(TSRMLS_DC);
125+
Exit;
126+
end;
127+
128+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
129+
begin
130+
zend_wrong_param_count(TSRMLS_DC);
131+
Exit;
132+
end;
133+
134+
bmpName := param[0]^.value.str.val;
135+
dispose_pzval_array(param);
136+
if not FileExists(bmpName) then
137+
begin
138+
ZVAL_FALSE(return_value);
139+
Exit;
140+
end;
141+
142+
try
143+
BitMap := TBitmap.Create;
144+
Bitmap.LoadFromFile(bmpName);
145+
Jpg := TJPegImage.Create;
146+
Bmp2Jpg(Bitmap, Jpg);
147+
MS := TMemoryStream.Create;
148+
Jpg.SaveToStream(MS);
149+
_content_type := 'Content-type: image/jpeg';
150+
sapi_add_header_ex(_content_type, strlen(_content_type), true, true, TSRMLS_DC);
151+
php_body_write(MS.Memory, MS.Size, TSRMLS_DC);
152+
MS.Free;
153+
ZVAL_TRUE(return_value);
154+
except
155+
ZVAL_FALSE(return_value);
156+
end;
157+
end;
158+
159+
160+
{$IFDEF PHP510}
161+
procedure sign_jpeg (ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
162+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
163+
{$ELSE}
164+
procedure sign_jpeg (ht : integer; return_value : pzval; this_ptr : pzval;
165+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
166+
{$ENDIF}
167+
var
168+
JpgName : PChar;
169+
FontName : PChar;
170+
Color : TColor;
171+
Size : integer;
172+
X : integer;
173+
Y : integer;
174+
Sign : PChar;
175+
176+
param : pzval_array;
177+
Jpg : TJPEGImage;
178+
Bmp : TBitmap;
179+
180+
MS : TMemoryStream;
181+
_content_type : PChar;
182+
183+
begin
184+
if ht <> 7 then
185+
begin
186+
zend_wrong_param_count(TSRMLS_DC);
187+
Exit;
188+
end;
189+
190+
if ( not (zend_get_parameters_ex(ht, Param) = SUCCESS )) then
191+
begin
192+
zend_wrong_param_count(TSRMLS_DC);
193+
Exit;
194+
end;
195+
196+
JpgName := param[0]^.value.str.val;
197+
FontName := param[1]^.value.str.val;
198+
Color := param[2]^.value.lval;
199+
Size := param[3]^.value.lval;
200+
X := param[4]^.value.lval;
201+
Y := param[5]^.value.lval;
202+
Sign := param[6]^.value.str.val;
203+
204+
dispose_pzval_array(param);
205+
206+
if not FileExists(JpgName) then
207+
begin
208+
ZVAL_FALSE(return_value);
209+
Exit;
210+
end;
211+
212+
try
213+
Jpg := TJpegImage.Create;
214+
Jpg.LoadFromFile(JpgName);
215+
Bmp := TBitmap.Create;
216+
Bmp.Assign(JPG);
217+
Bmp.Canvas.Font.Name := FontName;
218+
Bmp.Canvas.Font.Size := Size;
219+
Bmp.canvas.Font.Color := Color;
220+
Bmp.Canvas.Pen.Style := psClear;
221+
Bmp.Canvas.Brush.Style := bsClear;
222+
Bmp.Canvas.TextOut(X, Y, Sign);
223+
Jpg.Assign(bmp);
224+
Bmp.Free;
225+
MS := TMemoryStream.Create;
226+
Jpg.SaveToStream(MS);
227+
_content_type := 'Content-type: image/jpeg';
228+
sapi_add_header_ex(_content_type, strlen(_content_type), true, true, TSRMLS_DC);
229+
php_body_write(MS.Memory, MS.Size, TSRMLS_DC);
230+
MS.Free;
231+
ZVAL_TRUE(return_value);
232+
except
233+
ZVAL_FALSE(return_value);
234+
end;
235+
end;
236+
237+
238+
var
239+
moduleEntry : Tzend_module_entry;
240+
module_entry_table : array[0..3] of zend_function_entry;
241+
242+
243+
function get_module : Pzend_module_entry; cdecl;
244+
begin
245+
if not PHPLoaded then
246+
LoadPHP;
247+
ModuleEntry.size := sizeof(Tzend_module_entry);
248+
ModuleEntry.zend_api := ZEND_MODULE_API_NO;
249+
ModuleEntry.zts := USING_ZTS;
250+
ModuleEntry.Name := 'php_jpeg';
251+
ModuleEntry.version := '1.0';
252+
ModuleEntry.module_startup_func := @minit;
253+
ModuleEntry.module_shutdown_func := @mshutdown;
254+
ModuleEntry.request_startup_func := @rinit;
255+
ModuleEntry.request_shutdown_func := @rshutdown;
256+
ModuleEntry.info_func := @php_info_module;
257+
258+
Module_entry_table[0].fname := 'convert_bmp_jpeg';
259+
Module_entry_table[0].handler := @convert_bmp_jpeg;
260+
261+
Module_entry_table[1].fname := 'show_bmp_jpeg';
262+
Module_entry_table[1].handler := @show_bmp_jpeg;
263+
264+
Module_entry_table[2].fname := 'sign_jpeg';
265+
Module_entry_table[2].handler := @sign_jpeg;
266+
267+
ModuleEntry.functions := @module_entry_table[0];
268+
ModuleEntry._type := MODULE_PERSISTENT;
269+
Result := @ModuleEntry;
270+
end;
271+
272+
273+
274+
exports
275+
get_module;
276+
277+
end.
278+
+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?
2+
$j = $_SERVER['DOCUMENT_ROOT'] . "/test.jpg";
3+
$b = $_SERVER['DOCUMENT_ROOT'] . "/test.bmp";
4+
5+
//show_bmp_jpeg($b);
6+
7+
//convert_bmp_jpeg($b, $j);
8+
9+
$color = 0xFFFFFF;
10+
$fontname = "Arial Bold";
11+
$fontsize = 10;
12+
$x = 10;
13+
$y = 10;
14+
sign_jpeg($j, $fontname, $color, $fontsize, $x, $y, "Signed by Me");
15+
16+
?>

Demos/Bonus/PHPEncoder/phpencoder.dpr

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
library phpencoder;
2+
3+
{$I PHP.INC}
4+
5+
uses
6+
Windows, SysUtils, zendTypes, ZENDAPI, phpTypes, PHPAPI, Classes;
7+
8+
9+
function rinit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
10+
begin
11+
Result := SUCCESS;
12+
end;
13+
14+
function rshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
15+
begin
16+
Result := SUCCESS;
17+
end;
18+
19+
procedure php_info_module(zend_module : Pzend_module_entry; TSRMLS_DC : pointer); cdecl;
20+
begin
21+
php_info_print_table_start();
22+
php_info_print_table_row(2, PChar('php encryption'), PChar('enabled'));
23+
php_info_print_table_end();
24+
end;
25+
26+
function minit (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
27+
begin
28+
RESULT := SUCCESS;
29+
end;
30+
31+
function mshutdown (_type : integer; module_number : integer; TSRMLS_DC : pointer) : integer; cdecl;
32+
begin
33+
RESULT := SUCCESS;
34+
end;
35+
36+
{$IFDEF PHP510}
37+
procedure ex_dec(ht : integer; return_value : pzval; return_value_ptr : ppzval; this_ptr : pzval;
38+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
39+
{$ELSE}
40+
procedure ex_dec(ht : integer; return_value : pzval; this_ptr : pzval;
41+
return_value_used : integer; TSRMLS_DC : pointer); cdecl;
42+
{$ENDIF}
43+
var
44+
FileName : PChar;
45+
S : TFileStream;
46+
st : string;
47+
i : integer;
48+
begin
49+
FileName := zend_get_executed_filename(TSRMLS_DC);
50+
51+
S := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
52+
SetLength(St, S.Size);
53+
S.Read(St[1], S.Size);
54+
S.Free;
55+
i := pos('?>', St);
56+
Delete(St, 1, I + 1);
57+
//Now st contains encrypted string
58+
//encryption is very simple: xor
59+
for i := 1 to length(st) do
60+
if (st[i] <> #10) and (st[i] <> #13) then
61+
st[i] := chr ( ord(st[i]) xor 8);
62+
zend_eval_string(PChar(st), nil, 'decoded', TSRMLS_DC);
63+
end;
64+
65+
66+
var
67+
moduleEntry : Tzend_module_entry;
68+
module_entry_table : array[0..1] of zend_function_entry;
69+
70+
71+
function get_module : Pzend_module_entry; cdecl;
72+
begin
73+
if not PHPLoaded then
74+
LoadPHP;
75+
ModuleEntry.size := sizeof(Tzend_module_entry);
76+
ModuleEntry.zend_api := ZEND_MODULE_API_NO;
77+
ModuleEntry.zts := USING_ZTS;
78+
ModuleEntry.Name := 'phpencoder';
79+
ModuleEntry.version := '0.0';
80+
ModuleEntry.module_startup_func := @minit;
81+
ModuleEntry.module_shutdown_func := @mshutdown;
82+
ModuleEntry.request_startup_func := @rinit;
83+
ModuleEntry.request_shutdown_func := @rshutdown;
84+
ModuleEntry.info_func := @php_info_module;
85+
Module_entry_table[0].fname := 'ex_dec';
86+
Module_entry_table[0].handler := @ex_dec;
87+
ModuleEntry.functions := @module_entry_table[0];
88+
ModuleEntry._type := MODULE_PERSISTENT;
89+
Result := @ModuleEntry;
90+
end;
91+
92+
93+
94+
exports
95+
get_module;
96+
97+
end.
98+

0 commit comments

Comments
 (0)