WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Problem mit Server-Kommuniaktion

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Problem mit Server-Kommuniaktion - 16 Jan 2021 Antworten
im Forum für Webhosting Homepage gefunden:
Problem mit Server-Kommuniaktion
Wolf
Pixelschubser
Threadstarter




Beiträge: 4

Hi,
im Grudne bin ich Autodidakt und lernte PHP nur aus einem Buch ... aber "programmieren" lernte ich schon vor Jahrezehnten ;). Deshalkb bin ich auch mit so manchem "neuen Zeug" nicht vertraut.

Problem:

Ausgangslage: Daten aus einem Web-Formular werden per POST an ein cgi-script übergeben (perl) - kein Problem. (Alles wo “kein Problem” steht, funktioniert).

Zwischenstufe: Um eine Verfizierung der Einträge vorzunehmen, werden die Daten statt an das cgi-Script an ein (neu geschriebenes) Php-Script übergeben, welches diese (vorläufig) in einer DB speichert - kein Problem. Das selbe Script schickt eine Mail mit einem Verfikations-URL (ein weiteres php-Script) an den eintragenden Surfer - kein Problem.

Endstufe: Wenn die Verifikation (Anklicken des URL, besagtes weitere php-Script) kommt, wird der Datensatz in der DB lokalisiert, extrahiert und gelöscht - kein Problem.

Dann müssen die (im Datensatz befindlichen) Daten an das ursprüngliche Formular geschickt werden. Zur Zeit mache ich das mit ...

header("Location: http://www.domain/pfad/zum/script.cgi?$cgi_string", "r"); - wobei “$cgi_string” die Daten korrekt enthält aber ...

Problem: Jetzt werden die Daten offenbar per GET übergeben, und das originale cgi-Script läuft fehl, weil es diese per POST erwartet.

Frage: Wie kann ich die Daten aus einem PHP-Script heraus ohne Interaktion mit dem Formular per GET an das originale Script übergeben? Oder ... wie erzeuge ich im PHP-Script einen “GET”-Aufruf mit Datenübergabe, aber ohne Formular und User-Interaktion?
UND ... wie “fange ich ab” die http-Ausgabe des originalen Scripts (entweder OK und “Danke etc ...” oder “Error nnn etc...”) nach Übergabe der Daten, um sie im php-Script zu analysieren und entsprechende Aktionen abzuleiten?

Frage am Rande, die sich erst in der Folge stellen wird:

Wie stelle ich sicher, dass dieser “Mechanismus” “re-entrant” ist, das heißt, dass mehrere User “gleichzeitig” ihren Verifikations-URL anklicken können, ohne dass es zu Kollisionen kommt? (Es muss da so etwas wie eine “Lock”-Funktion geben, von der ich aber in meinem PHP-Buch bisher NULL Info finden konnte. Ggf. hilft mir auch ein Verweis auf entsprechende Literatur oder Website ...)

Bin für jede Hilfe dankbar!
Wolf

  Profil   E-Mail   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Frage: Wie kann ich die Daten aus einem PHP-Script heraus ohne Interaktion mit dem Formular per GET an das originale Script übergeben? Oder ... wie erzeuge ich im PHP-Script einen “GET”-Aufruf mit Datenübergabe, aber ohne Formular und User-Interaktion?


Du meinst POST? GET hast du doch schon automatisch durch das anhängen des Query-Strings. Zum POSTen musst du eine Socket-Verbindung mit dem Ziel aufbauen. Näheres dazu steh hier: http://php.net/fsockopen Abfangen der Daten - vermute ich - geht dann über fgets.

Das ganze Gebastel mit dem anderen Script klingt auch nicht gerade schön. Wenn das CGI-Teil nicht zu umfangreich ist, solltest du vielleicht einfach alles auf PHP umstellen.

Zum Locking: Meinst du einen Mutex oder sowas für die Datenbank? Die regelt das schon selbst. Wenn du meinst, wie du verschiedene User voneinander unterscheiden kannst, musst du jedem Nutzer einfach eine eindeutige Kennung zuweisen. Das einfachste wäre ein auto_increment in deiner Datenbank. Das müsste der Nutzer dann halt per GET in seinem Verifikationslink angeben.

  Profil   Editieren   Zitieren
Wolf
Pixelschubser
Threadstarter




Beiträge: 4

Danke, languitar!

Ja klar, hab' mich vertippt mit dem Post/Get - zu dumm.

Danke Dir für den Hinweis auf fsockopen ... das werd' ich mir zu Gemüte führen und entsprechend einbauen! Zum vorhandenen cgi-Script: Es ist Teil einen größeren Software-Komplexes, den ich nicht austauschen möchte (Kosten!)

Zu den mehrern Usern ... eigentlich meinte ich das Script selbst, ja, Mutex: Es könnte ja sein, dass zwei User irgendwo in der Welt zur gleichen Zeit eine Verfikation abschicken ... und das könnte eine Kollision in der Datenbank geben. "Selbst regeln" wird sich vermutlich nur eine SQL-Datenbank - nicht aber eine "flat file"-Datenbank, die ich hier habe. Vermutlich wird es besser sein, das mit MySQL zu machen ... ist wirklich eine Überlegung wert! (Wollte ich ursprünglich nicht, weil es ja kaum Hunderte Datensätze (= Zeilen) werden.

Herzlichen Dank vorerst! Ich melde mich wieder, wenn ich Fortschritt vermelden kann!
Wolf


  Profil   E-Mail   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Für Dateien gibt es eine Form von RW-Locks. flock heißt die entsprechende Funktion: http://php.net/flock

  Profil   Editieren   Zitieren
Wolf
Pixelschubser
Threadstarter




Beiträge: 4

Danke, languitar!
- prima, die Info zum Lock! ) - kann ich gut gebrauchen!

Noch eine Frage zum fsockopen ...

Ich habe folgenden Code gemacht:

#($cgi_string = wie vorher ... der korrekte Post-String);
$uri = "www.domain.tld/cgi-bin/pfad/zum/script.cgi";
$host = "www.domain.tld";

$da = fsockopen("www.domain.tld/cgi-bin/pfad/zum/script.cgi", 80, $errno, $errstr, 30);
if (!$da) {
echo "$errstr ($errno)
\n";
echo $da;
}
else {
$send_str = "POST $uri HTTP/1.1\r\n";
$send_str .= "Host: $host\r\n";
$send_str .= "User-Agent: PHP Script\r\n";
$send_str .= "Content-Type: application/x-www-form-urlencoded\r\n";
$send_str .= "Content-Length: ".strlen($cgi_string)."\r\n";
$send_str .= "Connection: close\r\n\r\n";
$send_str .= $cgi_string;
fwrite($da, $send_str);

echo $da, $uri, $send_str;
}

... und erhalte folgenden Fehler:

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Name or service not known in /home/marketce/public_html/dopt/capture/verify.php on line 53

Warning: fsockopen() [function.fsockopen]: unable to connect to www.domain.tld/cgi-bin/pfad/zum/script.cgi:80 in /home/marketce/public_html/dopt/capture/verify.php on line 53
Permission denied (13)

- leider kann ich so gut wie nichts damit anfangen, weil ich nicht sehen kann, wo "getaddrinfo" herkommt, und weshalb plötzlich "Permission denied" sein sollte. :( - Hast Du dazu eine Idee, eine Erklärung? Möglicherweise ist an meinen Variablen was falsch ...
zum abschließenden "echo" kommt es offenbar nicht mehr, oder aber die Variablen sind da leer.

Übrigens: alles, was oben als "domain.tld/cgi-bin/pfad/zum/script.cgi" lautet, sind in Wahrheit die korrekten URIs, wie sie perfekt im Browser funktionieren.

Was ich noch nicht probiert habe, was mir aber jetzt beim Schreiben in den Sinn kam: Möglicherweise sollte "$host" der Netzwerkname der Maschine sein ... der ist lautet "host.domain.net" (dieselbe Adresse, die die Nameserver haben, aber eben "host" statt "ns#"; das Ganze ist auf einem "dedicated Server").

Übrigens: Ganz herzlichen Dank, dass Du Dich meiner Problemchen so nett annimmst! Finde ich ganz großartig.

Wolf


  Profil   E-Mail   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

So wie ich die Beispiele auf der Manual-Seite deute, musst du dich mit dem host, als www.domain.tld verbinden und dann halt in dem HTTP-Request die entsprechende Seite anfordern. Würd ich zumindest jetzt vermuten. Der Comment von bimal dot das at maxartists dot com am 07-Jun-2006 11:22 auf der Manual-Seite sollte dir weiterhelfen.

  Profil   Editieren   Zitieren
Wolf
Pixelschubser
Threadstarter




Beiträge: 4

Danke!

Das beginnt wirklich Spaß zu machen: - ich bin trotz knapper Zeit schon recht viel weiter gekommen! Sagenhaft.

Offenbar läuft der Aufruf jetzt schon prinzipiell richtig, aber der Server meldet mir jetzt ...

Bad Request
Your browser sent a request that this server could not understand.
Request header field is missing colon separator.

DIESE Fehlermeldung ist aber recht prominent im Web zu finden, also da werde ich mich schon allein durchkämpfen können - und mich deshalb für ein paar Tage hier "abmelden".

Herzlichen Dank für das freundliche "unter die Fittiche-Nehmen" - es hat mir viel geholfen! Und ich habe eine Menge gelernt aus den Verweisen! Dank.

Wolf

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » Problem mit Server-Kommuniaktion

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Problem mit Server-Kommuniaktion im Forum Homepage Hosting AntwortenLetztes Posting
Buy verified European /US /UK passport, id cards,visas,driver's license (whatsapp : +237673528224) 
in "PHP & MySQL"
0 14.01.2021 09:01 von Royalty
Wo kann man 2020 am besten Geld aufbewahren?
in "PHP & MySQL"
2 13.01.2021 17:16 von Laurena
SEO-Dienste
in "PHP & MySQL"
6 13.01.2021 16:58 von Laurena
Vegetarismus in unserem Leben
in "PHP & MySQL"
2 13.01.2021 15:56 von Laurena
migrierter WP-Blog läuft nicht ...
in "PHP & MySQL"
1 25.12.2020 04:13 von vvj04350
Print view MySQL Database Install problems?
in "PHP & MySQL"
2 17.12.2020 09:18 von harmonxjim33
how to get reviews on amazon
in "PHP & MySQL"
0 13.12.2020 01:01 von Lerit
Comment choisir le robinet baignoire Homelody?
in "PHP & MySQL"
0 04.12.2020 08:00 von homelody
Empfehlen Sie mehrere Optionen
in "PHP & MySQL"
3 30.11.2020 07:25 von articlepost
Helfen Sie, einen guten Klempner zu finden
in "PHP & MySQL"
1 28.10.2020 09:09 von MEDUZA
The river flows eastward
in "PHP & MySQL"
0 20.10.2020 09:31 von inging
Poolpumpe
in "PHP & MySQL"
2 29.09.2020 05:39 von menubook
Sag mir einen Nebenjob im Internet
in "PHP & MySQL"
3 26.09.2020 10:18 von andyy
Kaufen Sie das Goethe- und Telc-Zertifikat online zum Verkauf ohne Prüfung (kaufengoetheundtelc@gmai
in "PHP & MySQL"
1 25.08.2020 16:32 von jaymillz



Besucher : 6993107    Heute : 168     Gestern : 1223     Online : 19     16.1.2021    3:29      1 Besucher in den letzten 60 Sekunden        
alle 60.00 Sekunden ein neuer Besucher
Nach oben