Probleme mit POST/php

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

The_Nici

Betreff: Probleme mit POST/php

BeitragSa, Jan 17, 2009 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Tach,
ich zerbreche mir den Kopf an diesem Problem:
Ich sende per POST wie folgt ein paar Daten an ein PHP-Script:
Code: [AUSKLAPPEN]

   WriteLine httpstream, "POST /voodoo.php"
   WriteLine httpstream, "Host: www.tes-cheese.ch"
   WriteLine httpstream, "Content-Type: application/x-www-form-urlencoded"
   WriteLine httpstream, "Content-Lenght: 24"
   WriteLine httpstream, "kopf=" + kopfcount + "&koerper=" + koerpercount + "&unterleib=" + unterleibcount + "&arml=" + armlcount + "&armr=" + armrcount + "&beinl=" + beinlcount + "&beinr=" + beinrcount
   WriteLine httpstream, ""


Das PHP-Script empfängt diese mit $_POST und verändert die Stats damit.


Code: [AUSKLAPPEN]

   While($row = mysql_fetch_object($output))
      {
      If($row->id == 1)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gkopf).' WHERE id = 1');
         echo $row->count_value." Nadeln zierten mein schönes Antlitz. Welch grausame Tat. :o<br>";
         }
      ElseIf($row->id == 2)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gkoerper).' WHERE id = 2');
         echo "Mit ".$row->count_value." Nadeln wurde ich akupunktiert. Jetzt sollten die Energieströme hoffentlich wieder richtig fliessen.<br>";
         }
      ElseIf($row->id == 3)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gunterleib).' WHERE id = 3');
         echo "Oha! Ich wurde mit ".$row->count_value ." Nadeln am Sack gekitzelt. Meine arme Familie :(<br>";
         }
      ElseIf($row->id == 4)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $garml).' WHERE id = 4');
         echo "Den linken Arm hat es ".$row->count_value ." mal erwischt. Tja. Aufs Schreiben kann ich jetzt spucken. :/<br>";
         }
      ElseIf($row->id == 5)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $garmr).' WHERE id = 5');
         echo "Uiuiui. Der rechte Arm durfte ".$row->count_value ." Nadeln spüren.<br>";
         }
      ElseIf($row->id == 6)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gbeinl).' WHERE id = 6');
         echo "Shice. Das linke Bein darf ich mir wohl nun amputieren, da wurde ich nämlich ".$row->count_value ." mal erwischt.<br>";
         }
      ElseIf($row->id == 7)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gbeinr).' WHERE id = 7');
         echo "Juhee, ich kauf mir ein Holzbein, da tun mir wenigstens die ".$row->count_value ." Nadeln im Bein nicht mehr weh. >_< <br>";
         }
      }


Jedoch verändern sich die Zahlen nicht. Wo liegt das Problem?
MfG

Eingeproggt

BeitragSa, Jan 17, 2009 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim BB-Code fällt mir auf, dass du nach
Code: [AUSKLAPPEN]
WriteLine httpstream, "Content-Lenght: 24"

keine Leerzeile sendest. Ich glaub die gehört schon hinein.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

The_Nici

BeitragSa, Jan 17, 2009 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mal eine reingemacht, funktioniert jedoch nach wie vor nicht. ;/
Trotzdem danke für die Hilfe.

ZaP

BeitragSa, Jan 17, 2009 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Holst du die Variablen in PHP über $_POST[]? Und wieso bist du dir so sicher, dass content-lenght immer 24 ist?
Starfare: Worklog, Website (download)

The_Nici

BeitragSa, Jan 17, 2009 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Ja.
2. Ich wusste nicht genau was ich da reinfüllen musste. :/ Erklärung auf Wikipedia ist bedürftig.

Geeecko

BeitragSa, Jan 17, 2009 16:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

POST /wiki/Spezial:Search HTTP/1.1
Host: de.wikipedia.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 24

search=Katzen&go=Artikel


Die Informationen sind mehr als ausreichend. Wer da nicht versteht, wieso es "Conten-Length: 24" heißen muss, der... Zähl doch einfach mal die zeichen von "search=..."

The_Nici

BeitragSa, Jan 17, 2009 17:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, der ... macht jetzt sein Spiel fertig. -.-

EDIT: Funktioniert leider immernoch nicht. Sad

Edit2: So, hab jetzt auch noch den richtigen PFad für das Dokument angegeben, jetzt wird es auch gefunden. Aber trotzdem werden die Einträge nicht erhöht.

Thorsten

BeitragSa, Jan 17, 2009 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Was wird dir denn ausgegeben? Einer der beiden Sätze? Gar nichts?

Ein Semikolon (;) ist am Ende von UPDATE sehr oft notwendig.

mfG,

Thorsten

The_Nici

BeitragSa, Jan 17, 2009 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Es wird alles korrekt ausgegeben, nur am speichern der Zahlen hapert es.

MfG

PS: Semiklon am Ende von UPDATE? Also dann 'UPDATE; ...' oder wie?
 

tmode00

BeitragSa, Jan 17, 2009 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich glaube ich kann dich beruhigen, dein Php-Skript arbeitet, ich hab mal ein kleines Testformular gebaut was sich zu deinem Php-Skript verbindet:

schau: http://ttlabs.de/test.php
While (1) : Wend

The_Nici

BeitragSa, Jan 17, 2009 21:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, okay, dann muss ich mich nicht nochmals hinter php setzen. ^-^
Jedoch bleibt nach wie vor die Frage: warum funktioniert das folgende nicht?
Code: [AUSKLAPPEN]

Function SendCounts()
   httpstream = OpenTCPStream("www.tes-cheese.ch", 80)
   abfrage$ = "kopf=" + kopfcount + "&koerper=" + koerpercount + "&unterleib=" + unterleibcount + "&arml=" + armlcount + "&armr=" + armrcount + "&beinl=" + beinlcount + "&beinr=" + beinrcount
   WriteLine httpstream, "POST http://tes-cheese.ch/voodoo.php HTTP 1.0"
   WriteLine httpstream, "Host: www.tes-cheese.ch"
   WriteLine httpstream, "UserAgent: TedsVoodoo"
   WriteLine httpstream, "Content-Type: application/x-www-form-urlencoded"
   WriteLine httpstream, "Content-Lenght: "+Len(abfrage$)
   WriteLine httpstream, ""
   WriteLine httpstream, abfrage$
   WriteLine httpstream, ""
   While Not Eof(httpstream)
      Print ReadLine(httpstream)
   Wend
   CloseTCPStream(httpstream)
End Function

Eingeproggt

BeitragSa, Jan 17, 2009 22:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich schätze wegen dem http:// (Is das einzige, was mir jetzt komisch vorkommt an deinem Code)
Schreib doch in den Request
Zitat:
www.tes-cheese.ch/voodoo.php
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

The_Nici

BeitragSa, Jan 17, 2009 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
So bekomm ich nen Bad Request. :/

Eingeproggt

BeitragSa, Jan 17, 2009 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry, war ned ganz bei der Sache. Hab nochmal nachgeschaut in n paar alten Codes von mir und da ließ ich den Server ganz weg, also in etwa so:
Code: [AUSKLAPPEN]
POST /voodoo.php HTTP 1.0


Probier das noch und dann geb ich mich geschlagen...
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

tmode00

Betreff: Richtige formatierung

BeitragSa, Jan 17, 2009 23:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Die richtige formatierung bezüglich www / http etc. ist diese:

Code: [AUSKLAPPEN]
Function http_request(server$="testsite.de",phpfile$="/index.php",content$="user=a&pass=b")
   ;Stream öffnen
   Local tcp=OpenTCPStream(server$,80)
   
   ;Http-request senden
   WriteLine tcp,"POST " + phpfile$ + " HTTP 1.1"
   WriteLine tcp,"Host: " + server$
   WriteLine tcp,"UserAgent: Blitzbasic"
   WriteLine tcp,"Content-Type: application/x-www-form-urlencoded"
   WriteLine tcp,"Content-Length: "+ Len(content$)
   WriteLine tcp,""
   WriteLine tcp,content$
   WriteLine tcp,""
      
   While Not Eof(tcp).... usw.


Also:

tcp=createserver... ohne http:// und ohne www

dann im post server wie (test.de) auch ohne alles , http:// davor geht auch!

Kann das sein das du integer und string und dann wieder integer variablen verwendest und die content length daher nicht stimmt. versuche mal nur eine variable zu senden und zähle manuell.

Auch ändere dringend mal folgendes:

Code: [AUSKLAPPEN]

lass das www auf jeden Fall weg, sonst geht es bei mir auch nicht!
While (1) : Wend
 

tmode00

Betreff: Das funktioniert einwandfrei:

BeitragSa, Jan 17, 2009 23:20
Antworten mit Zitat
Benutzer-Profile anzeigen
So, da hast du eine funktionierende variante:

Smile

Code: [AUSKLAPPEN]

Function SendCounts()
   Local httpstream = OpenTCPStream("tes-cheese.ch",80)
   Local abfrage$ = "kopf=" + Str(kopfcount) + "&koerper=" + Str(koerpercount) + "&unterleib=" + Str(unterleibcount) + "&arml=" + Str(armlcount) + "&armr=" + Str(armrcount) + "&beinl=" + Str(beinlcount) + "&beinr=" + Str(beinrcount)
   WriteLine httpstream, "POST http://tes-cheese.ch/voodoo.php HTTP 1.0"
   WriteLine httpstream, "Host: tes-cheese.ch"
   WriteLine httpstream, "UserAgent: TedsVoodoo"
   WriteLine httpstream, "Content-Type: application/x-www-form-urlencoded"
   WriteLine httpstream, "Content-Lenght: "+Len(abfrage$)
   WriteLine httpstream, ""
   WriteLine httpstream, abfrage$
   WriteLine httpstream, ""
   While Not Eof(httpstream)
      Print ReadLine(httpstream)
   Wend
   CloseTCPStream(httpstream)
End Function

SendCounts

WaitKey
While (1) : Wend

The_Nici

BeitragSo, Jan 18, 2009 0:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
danke für die Funktion. Leider will es immernoch nicht. Sad
Ich habe keine Ahnung warum. :/

MfG
 

tmode00

Betreff: ganzes Php-Skript

BeitragSo, Jan 18, 2009 10:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann muss es doch am php-skript liegen, es wird mit der funktion alles richtig übertragen und es kommt alles richtig zurück. Darf ich dich mal bitten die gesamte php-datei als code zu posten, ich will es mal auf meinen server laden und den Fehler suchen. Weil das Php-Skript oben beginnt ja erst ab dem MySql fetch von $output.
While (1) : Wend

The_Nici

BeitragSo, Jan 18, 2009 15:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

<?php
   $gkopf = $_POST['kopf'];
   $gkoerper = $_POST['koerper'];
   $gunterleib = $_POST['unterleib'];
   $garml = $_POST['arml'];
   $garmr = $_POST['armr'];
   $gbeinl = $_POST['beinl'];
   $gbeinr = $_POST['beinr'];
   mysql_connect("localhost","bla", "bla");
   mysql_select_db("voodoo");
   $output = mysql_query("SELECT * FROM counts ORDER BY 'id'");
   While($row = mysql_fetch_object($output))
      {
      If($row->id == 1)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gkopf).' WHERE id = 1');
         echo $row->count_value." Nadeln zierten mein schönes Antlitz. Welch grausame Tat. :o<br>";
         }
      ElseIf($row->id == 2)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gkoerper).' WHERE id = 2');
         echo "Mit ".$row->count_value." Nadeln wurde ich akupunktiert. Jetzt sollten die Energieströme hoffentlich wieder richtig fliessen.<br>";
         }
      ElseIf($row->id == 3)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gunterleib).' WHERE id = 3');
         echo "Oha! Ich wurde mit ".$row->count_value ." Nadeln am Sack gekitzelt. Meine arme Familie :(<br>";
         }
      ElseIf($row->id == 4)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $garml).' WHERE id = 4');
         echo "Den linken Arm hat es ".$row->count_value ." mal erwischt. Tja. Aufs Schreiben kann ich jetzt spucken. :/<br>";
         }
      ElseIf($row->id == 5)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $garmr).' WHERE id = 5');
         echo "Uiuiui. Der rechte Arm durfte ".$row->count_value ." Nadeln spüren.<br>";
         }
      ElseIf($row->id == 6)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gbeinl).' WHERE id = 6');
         echo "Shice. Das linke Bein darf ich mir wohl nun amputieren, da wurde ich nämlich ".$row->count_value ." mal erwischt.<br>";
         }
      ElseIf($row->id == 7)
         {
         mysql_query('UPDATE counts Set count_value = '.($row->count_value = $row->count_value + $gbeinr).' WHERE id = 7');
         echo "Juhee, ich kauf mir ein Holzbein, da tun mir wenigstens die ".$row->count_value ." Nadeln im Bein nicht mehr weh. >_< <br>";
         }
      }
?>

BtbN

BeitragSo, Jan 18, 2009 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe vor ewigkeiten mal BB-Funktionen gebaut, um den Post-Kram zu machen.
https://www.blitzforum.de/foru...hp?t=14140
Vllt. funktionieren sie noch

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group