purebasic.info

PureBasic forum
Текущее время: Сб дек 15, 2018 10:13 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Подключение PHP
СообщениеДобавлено: Пт авг 27, 2010 7:26 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Всем доброго времени суток!
Тут у меня есть 1 идейка-сделать из стандартного атомик веб сервера полноценный Apache.И первая загвоздка-как подключить PHP?!
зЫ:если кому интересно,вот код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
 
;
; ------------------------------------------------------------
;
;       Project Web by _iNi_, first coded by AlphaSND
;
;           (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;
; 26/08/2010
;   Added some functions
;   Added visualisation
;   Added some extensions
;   Since version 0.1beta Project Web is coding by _iNi_
;
; 25/03/2001
;   Added path relative feature. It can be started everywhere
;   Added the window to kill it easely
;
; 19/03/2001
;   Added some new features (clients closed automatically)
;
; 17/03/2001
;   First subversion.
;
#V = " 0.1"
Enumeration
#Port
#Status
EndEnumeration
If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize the network !", 0)
  End
EndIf
 
Port = 80
BaseDirectory$ = "www/"
DefaultPage$   = "index.html"
Title$   = "Project Web"+#V
 
Global EOL$
 
EOL$ = Chr(13)+Chr(10)
 
*Buffer = AllocateMemory(10000)
 
If CreateNetworkServer(0, Port)
 
  OpenWindow(0, 100, 200, 220, 40, "Project Web"+#V); (Port )")
  Frame3DGadget(#PB_Any, 0, 0, 110, 40, "Server Status")
  TextGadget(#Port,10,15,40,11,"Port:"+Str(Port)+"")
  TextGadget(#Status,10,26,100,13,"Server status: ready")
  Frame3DGadget(#PB_Any, 110, 0, 110, 40, "Controls")
  ButtonGadget(100,115,15,50,20,"About")
  ButtonGadget(101,165,15,50,20,"Quit")
  Repeat
  Event=WaitWindowEvent() ; Получаем идентификатор текущего события в программе
    Type=EventType() ; Узнаём тип события
    If Event = #PB_Event_Gadget
        Select EventGadget()
  Case 100
  MessageRequester("About Project Web", "================================"+Chr(10)+"                       Project Web"+#V+Chr(10)+"================================"+Chr(10)+"Author: _iNi_"+Chr(10)+"About: Project Web is a little web server."+Chr(10)+"The first version I took from the examples,"+Chr(10)+"It has been coded by AlphaSND and was"+Chr(10)+"very poor.I took it,add some functions,"+Chr(10)+"extentions adn visualisation."+Chr(10)+"================================"+Chr(10)+"Ohloh: https://www.ohloh.net/p/projectweb"+Chr(10)+"SF: https://sourceforge.net/projects/projectweb/", #MB_OK|#MB_ICONINFORMATION)
  Case 101
  End
  EndSelect
  EndIf
  ;Until Event=#PB_Event_CloseWindow
    Repeat
      WEvent = WindowEvent()
 
      If WEvent = #PB_Event_CloseWindow : Quit = 1 : EndIf
    Until WEvent = 0
   
    SEvent = NetworkServerEvent()
 
    If SEvent
      ClientID.l = EventClient()
 
      Select SEvent
     
        Case 1  ; When a new client has been connected...
         
        Case 4  ; When a client has closed the connection...
 
        Default
          RequestLength.l = ReceiveNetworkData(ClientID, *Buffer, 2000)
          Gosub ProcessRequest
         
      EndSelect
 
    Else
      Delay(20)  ; Don't stole the whole CPU !
    EndIf
   
  Until Event=#PB_Event_CloseWindow;Quit = 1
   
  CloseNetworkServer(0)
Else
  MessageRequester(Title$, "Error: can't create the server (port in use ?).", 0)
EndIf
 
End
 
 
 
Procedure.l BuildRequestHeader(*Buffer, DataLength.l, ContentType$)
 
  Length = PokeS(*Buffer, "HTTP/1.1 200 OK"+EOL$)                     : *Buffer+Length
  Length = PokeS(*Buffer, "Date: Thu, 26 Aug 2010 22:45 GMT+2"+EOL$) : *Buffer+Length
  Length = PokeS(*Buffer, "Server: Project Web 0.1beta"+EOL$)      : *Buffer+Length
  Length = PokeS(*Buffer, "Content-Length: "+Str(DataLength)+EOL$)    : *Buffer+Length
  Length = PokeS(*Buffer, "Content-Type: "+ContentType$+EOL$)         : *Buffer+Length
  Length = PokeS(*Buffer, EOL$)                                       : *Buffer+Length
 
  ; Length = PokeS(*Buffer, "Last-modified: Thu, 27 Jun 1996 16:40:50 GMT"+Chr(13)+Chr(10)  , *Buffer) : *Buffer+Length
  ; Length = PokeS(*Buffer, "Accept-Ranges: bytes"+EOL$                 , *Buffer) : *Buffer+Length
  ; Length = PokeS(*Buffer, "Connection: close"+EOL$) : *Buffer+Length
 
  ProcedureReturn *Buffer
EndProcedure
 
 
ProcessRequest:
 
  a$ = PeekS(*Buffer)
 
  If Left(a$, 3) = "GET"
 
    MaxPosition = FindString(a$, Chr(13), 5)
    Position = FindString(a$, " ", 5)
    If Position < MaxPosition
      RequestedFile$ = Mid(a$, 6, Position-5)      ; Automatically remove the leading '/'
      RequestedFile$ = RTrim(RequestedFile$)
    Else
      RequestedFile$ = Mid(a$, 6, MaxPosition-5)   ; When a command like 'GET /' is sent..
    EndIf
 
      ; The following routine transforme all '/' in '\' (Windows format)
      ;
      Structure tmp
        a.b
      EndStructure
 
      If RequestedFile$ = ""
        RequestedFile$ = DefaultPage$
      Else
        *t.tmp = @RequestedFile$
        While *t\a <> 0
          If *t\a = '/' : *t\a = '\' : EndIf
          *t+1
        Wend
      EndIf
 
      ; Test if the file exists, and if not display the error message
      ;  
 
      If ReadFile(0, BaseDirectory$+RequestedFile$)
     
        FileLength = Lof(0)
 
        Select Right(RequestedFile$,60)
Case ".3dm"
            ContentType$ = "x-world/x-3dmf"
Case ".3dmf"
            ContentType$ = "x-world/x-3dmf"    
Case ".a"
            ContentType$ = "application/octet-stream"
Case ".aab"
            ContentType$ = "application/x-authorware-bin"
Case ".aam"
            ContentType$ = "application/x-authorware-map"      
Case ".aas"
            ContentType$ = "application/x-authorware-seg"      
Case ".abc"
            ContentType$ = "text/vnd.abc"      
Case ".acgi"
            ContentType$ = "text/html" 
Case ".afl"
            ContentType$ = "video/animaflex"   
Case ".ai"
            ContentType$ = "application/postscript"    
Case ".aif"
            ContentType$ = "audio/aiff"
Case ".aif"
            ContentType$ = "audio/x-aiff"              
Case ".aifc"
            ContentType$ = "audio/aiff"
Case ".aifc"
            ContentType$ = "audio/x-aiff"      
Case ".aiff"
            ContentType$ = "audio/aiff"
Case ".aim"
            ContentType$ = "application/x-aim" 
Case ".aip"
            ContentType$ = "text/x-audiosoft-intra"    
Case ".ani"
            ContentType$ = "application/x-navi-animation"      
Case ".aos"
            ContentType$ = "application/x-nokia-9000-communicator-add-on-software"     
Case ".aps"
            ContentType$ = "application/mime"  
Case ".arc"
            ContentType$ = "application/octet-stream"  
Case ".arj"
            ContentType$ = "application/octet-stream"
Case ".art"
            ContentType$ = "image/x-jg"
Case ".asf"
            ContentType$ = "video/x-ms-asf"            
Case ".asm"
            ContentType$ = "text/x-asm"        
Case ".asp"
            ContentType$ = "text/asp"  
Case ".asx"
            ContentType$ = "application/x-mplayer2"    
Case ".asx"
            ContentType$ = "video/x-ms-asf"
Case ".asx"
            ContentType$ = "video/x-ms-asf-plugin"     
Case ".au"
            ContentType$ = "audio/basic"
Case ".au"
            ContentType$ = "audio/x-au"        
Case ".avi"
            ContentType$ = "application/x-troff-msvideo"
Case ".avi"
            ContentType$ = "video/avi"
Case ".avi"
            ContentType$ = "video/msvideo"
Case ".avi"
            ContentType$ = "video/x-msvideo"
Case ".avs"
            ContentType$ = "video/avs-video"
Case ".bcpio"
            ContentType$ = "application/x-bcpio"       
Case ".bin"
            ContentType$ = "application/mac-binary"
Case ".bin"
            ContentType$ = "application/macbinary"
Case ".bin"
            ContentType$ = "application/octet-stream"
Case ".bin"
            ContentType$ = "application/x-binary"
Case ".bin"
            ContentType$ = "application/x-macbinary"   
Case ".bm"
            ContentType$ = "image/bmp"
Case ".bmp"
            ContentType$ = "image/bmp"
Case ".bmp"
            ContentType$ = "image/x-windows-bmp"
Case ".boo"
            ContentType$ = "application/book"
Case ".book"
            ContentType$ = "application/book"
Case ".boz"
            ContentType$ = "application/x-bzip2"
Case ".bsh"
            ContentType$ = "application/x-bsh"
Case ".bz"
            ContentType$ = "application/x-bzip"
Case ".bz2"
            ContentType$ = "application/x-bzip2"
Case ".c"
            ContentType$ = "text/plain"
Case ".c"
            ContentType$ = "text/x-c"  
Case ".c++"
            ContentType$ = "text/plain"
Case ".cat"
            ContentType$ = "application/vnd.ms-pki.seccat"
Case ".cc"
            ContentType$ = "text/plain"
Case ".cc"
            ContentType$ = "text/x-c"
Case ".ccad"
            ContentType$ = "application/clariscad"
Case ".cco"
            ContentType$ = "application/x-cocoa"
Case ".cdf"
            ContentType$ = "application/cdf"
          Default
            ContentType$ = "text/html"
 
        EndSelect
       
        *FileBuffer   = AllocateMemory(FileLength+200)
        *BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
 
        ReadData(0, *BufferOffset, FileLength)
 
        CloseFile(0)
 
        SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
        FreeMemory(*FileBuffer)
      Else
        If ReadFile(0, BaseDirectory$+"404.html")
          FileLength = Lof(0)
          ContentType$ = "text/html"
 
          *FileBuffer   = AllocateMemory(FileLength+200)
          *BufferOffset = BuildRequestHeader(*FileBuffer, FileLength, ContentType$)
 
          ReadData(0, *BufferOffset, FileLength)
          CloseFile(0)
   
          SendNetworkData(ClientID, *FileBuffer, *BufferOffset-*FileBuffer+FileLength)
          FreeMemory(*FileBuffer)
        EndIf
      EndIf
  EndIf
 
Return
 


_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт авг 27, 2010 5:11 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
эммм.... и что,ответить никто не может?
ну хотябы скажите как узнать какую пользователь открывает страницу(каждый) и тогда модно будет сделать так:
Код:
1
RunProgram("C:\ProjectPHP\php\php.exe","C:\ProjectPHP\www\"+PageName$,"","")


_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 7:07 am 
Не в сети
док

Зарегистрирован: Вс май 02, 2010 4:54 pm
Сообщений: 117
Откуда: оттуда...
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
_iNi_ писал(а):
сделать из стандартного атомик веб сервера полноценный Apache

Улыбнуло :D, дерзай, удачи тебе...
_iNi_ писал(а):
И первая загвоздка-как подключить PHP?!

http://ru.wikipedia.org/wiki/Common_Gateway_Interface
_iNi_ писал(а):
эммм.... и что,ответить никто не может?

эммм...., ну вроде бы здесь не тематический форум для Веб-кодеров....


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 8:58 am 
Не в сети
профессор

Зарегистрирован: Вт мар 24, 2009 11:54 am
Сообщений: 357
Благодарил (а): 14 раз.
Поблагодарили: 18 раз.
Пункты репутации: 19
Эм-м-м

Поюзай Хелп там все написано в разделе Network

А вкраце скажу.

Когда клиент или брауз посылает запрос серваку он что делает? ...
правильно подключается к нему...можно узнать апишник пользователя...а в запросе указывается какая страница нужна...

в википедии поищи протокол запроса там точно есть


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 10:52 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
СПС БОЛЬШОЙ!
зЫ: кто сидит на охлохе?подключайтесь к проекту: https://www.ohloh.net/p/projectweb

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 12:53 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
cherri123 писал(а):
Когда клиент или брауз посылает запрос серваку он что делает? ...

правильно подключается к нему...можно узнать апишник пользователя...а в запросе указывается какая страница нужна...

те так:
Код:
1
2
3
4
5
6
7
 
If GetClientIP(ClientID)
ReadFile(0, BaseDirectory$+RequestedFile$)
     
        FileLength = Lof(0)
RunProgram("php.exe",BaseDirectory$+RequestedFile$,........)
 


?!?!?!?!

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 1:08 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
смотрел в интернете как подключить через CGI,там идет загрузка модулей,а модуля под самописный веб-сервер нет,те нужно запускать еще и использование API=> поставлять вместе с PHP.
Никто не знает где можно достать API php модулей?

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 10:52 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ну?!кто помочь может?!

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб авг 28, 2010 11:45 pm 
Не в сети
PureC Coder

Зарегистрирован: Ср май 07, 2008 5:37 pm
Сообщений: 522
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
_iNi_, à êàêîé ñìûñë èñïîëüçîâàòü ohloh, åñëè òû âñå ðàâíî íèêàêîãî êîäà åìó äëÿ ñîñòàâëåíèÿ ñòàòèñòèêè íå äàåøü? Â ñòàòèñòèêå òàì âñÿ ñóòü.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 29, 2010 9:46 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 08, 2010 9:41 am
Сообщений: 206
Откуда: Приднестровье, Бендеры
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
ну а как его дать?

_________________
Free Coders Community


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс авг 29, 2010 1:33 pm 
Не в сети
PureC Coder

Зарегистрирован: Ср май 07, 2008 5:37 pm
Сообщений: 522
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ñäåëàòü svn-ðåïîçèòàðèé è ïðèêðåïèòü ê ïðîåêòó. Òîëüêî äóìàþ, ÷òî ohloh íå óìååò àíàëèçèðîâàòü êîä íà PureBasic.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт авг 31, 2010 9:54 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пн апр 27, 2009 5:18 pm
Сообщений: 387
Откуда: Череповец, Вологодская область
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Зачем тебе его там выкладывать? Выкладывай тут.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт сен 03, 2010 2:34 am 
Не в сети
ассистент

Зарегистрирован: Чт янв 07, 2010 8:54 pm
Сообщений: 19
Откуда: Броды, Украина
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
_iNi_ писал(а):
эммм.... и что,ответить никто не может?
ну хотябы скажите как узнать какую пользователь открывает страницу(каждый) и тогда модно будет сделать так:
Код:
1
RunProgram("C:\ProjectPHP\php\php.exe","C:\ProjectPHP\www"+PageName$,"","")



Узнать страницу не сложно - посмотри здесь http://rfc2.ru/2068.rfc описание протокола HTTP 1.1 на русском.
А в остальном ...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Подключение PHP
СообщениеДобавлено: Вт янв 24, 2017 2:06 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1717
Откуда: Алматы
Благодарил (а): 16 раз.
Поблагодарили: 47 раз.
Пункты репутации: 5
вот и у меня какая-то фигня... копаю значит исходники браузерки, и там для её нормальной установки нужно еще создать задачу для крона. что типа раз в минуту тыркать такую-то php страницу.

Код:
1
/usr/bin/php -q /home/public_html/game/Round.php> /dev/null



поставил EasyPHP. в нем апачи, мисикуели, пхп - все что нужно суп набор. нашел путь до этого php ехе. указываю путь до моего php файла. и вроде как выполнение происходит - я в качестве дебага в конце пхп втулил создание текстового файла. однако в этой самой игре бегать бегает, но ничо не строит скатина. и ежели взять запустить эту страницу в браузере - то тогда ход как бы учитывается и строительство идет потихоньку. топорно то я сделал - веб гаджет и рефреш по таймеру. но это ж мазохизм. должно же через этот php.exe работать... а оно как-то на половину работает. бред какой-то. может там какой-то секрет есть? указывал полный путь до php. указывал рабочу папку как до php, так и до самой странички php. ни так ни сяк. через тупой рефреш в веб гаджете сижу блин. а хочется то сделать по человечески.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Подключение PHP
СообщениеДобавлено: Чт янв 26, 2017 3:41 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 16 раз.
Пункты репутации: 10
SereZa писал(а):
указываю путь до моего php файла

А указываешь где и чему? Крону?

_________________
.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB