PHP und PB

Anfängerfragen zum Programmieren mit PureBasic.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

PHP und PB

Beitrag von Angelo »

Kann ich in PB einen String an eine PHP-Datei senden und dann die Meldung dieser PHP-Datei abfangen?
In Basic4Android ist das leicht möglich. Ich füge hier mal den B4A-Code ein, damit man sehen kann, was ich auch in PB machen möchte.

PHP-Datei hello.php

Code: Alles auswählen

<?php
$name = $_GET["my_name"];
exit('Hello,  ' . $name . '! Wie geht's?');
?>
Hier ist der Basic4Android-Code. In Activity_Create wird ein Http-Objekt definiert und ein Jobname ("Say_hello") festgelegt. Über die Download2-Methode wird eine Variable "my_name" und deren Wert "Angelo" an hello.php übergeben. In JobDone wird dann die Meldung der PHP-Datei abgefangen und angezeigt.

Code: Alles auswählen

Sub Activity_Create(FirstTime As Boolean)
	Dim myJob As HttpJob
	myJob.Initialize("Say_hello", Me) 
	'Send a GET request:
	myJob.Download2("http://my_domain/hello.php", Array As String("my_name", "Angelo"))
End Sub

Sub JobDone (JobEvaluation As HttpJob)
	Dim meldung As String
	If JobEvaluation.Success = True Then
		If JobEvaluation.JobName = "Say_hello" Then
			meldung = JobEvaluation.GetString
			ToastMessageShow(meldung, True)
		End If
	End If	
End Sub
PB 5.50; Win 7
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PHP und PB

Beitrag von Kiffi »

das geht beispielsweise hiermit:

Code: Alles auswählen

EnableExplicit

Define TempFileName.s
Define FF
Define TempFileContent.s

TempFileName = GetTemporaryDirectory() + "hello.tmp"

If ReceiveHTTPFile("http://my_domain/hello.php?my_name=Angelo", TempFileName)
  FF = ReadFile(#PB_Any, TempFileName)
  If FF
    TempFileContent = ReadString(FF, #PB_File_IgnoreEOL)
    Debug TempFileContent
    CloseFile(FF)
    DeleteFile(TempFileName)
  Else
    Debug "!ReadFile()"
  EndIf
Else
  Debug "!ReceiveHTTPFile()"
EndIf
(ungetestet; müsste aber laufen)

Du kannst auch das GetHTTPFile.pbi-Modul von Thorsten1867 benutzen. Das bietet Dir die Möglichkeit, Dateien direkt in den Speicher herunterzuladen und / oder Dateien im Hintergrund herunterzuladen.

Eine weitere Möglichkeit wäre, direkt mit den PB-Network-Befehlen zu arbeiten. Sag Bescheid, wenn Dir das mehr behagt.

Grüße ... Peter
a²+b²=mc²
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: PHP und PB

Beitrag von Angelo »

Danke, Kiffi, für Deine Antwort. Der Hintergrund meiner Frage ist, dass ich mit einer PHP-Datei auf eine Tabelle in einer MySQL-DB zugreifen will, also Datensätze hinzufügen und auch Abfragen machen will. Das Programmieren einer entsprechenden App mit Basic4Android ist ziemlich straightforward, weil man mit der Download2-Methode eine php-Datei ausführen und ihr Variable plus Values mitgeben kann. Und da war mein Gedanke, dass ich das zusätzlich unter Windows machen könnte. Würde das mit dem pbi-Modul am einfachsten gehen?
PB 5.50; Win 7
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PHP und PB

Beitrag von Kiffi »

Code: Alles auswählen

myJob.Download2("http://my_domain/hello.php", Array As String("my_name", "Angelo"))
... macht im Prinzip auch nichts anderes, als Deine PHP-Seite so aufzurufen:

Code: Alles auswählen

http://my_domain/hello.php?my_name=Angelo
Packst Du mehr Werte in das B4A-Array, so werden sie dementsprechend angehängt

Code: Alles auswählen

http://my_domain/hello.php?my_name=Angelo&myParam2=myValue2&myParam3...
Im Prinzip also so, wie oben in meinem Code (mit einem Parameter) demonstriert.

Der Vorteil von Thorstens Modul wäre hier: Du könntest die Antwort (Response) Deiner PHP-Seite direkt im Speicher entgegennehmen (und müsstest ihn nicht vorher auf einen Datenträger speichern, um ihn dann wieder mittels ReadFile() einzulesen) und Dein Programm müsste nicht pausieren, bis der Response bei Dir eintrifft.

Grüße ... Peter
a²+b²=mc²
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: PHP und PB

Beitrag von NicTheQuick »

Zu erwähnen wäre hier vielleicht noch der Befehl 'URLEncoder()', der alle Parameter in der URL korrekt kodiert, damit auch Sonderzeichen richtig zum Server übertragen werden.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: PHP und PB

Beitrag von Angelo »

Vielen Dank für Eure Antworten. Dann werd ich mich mal an die Arbeit machen ...
PB 5.50; Win 7
Antworten