Daten per Python anPHP übergeben

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
lordmyder

Daten per Python anPHP übergeben

Beitragvon lordmyder » Freitag 13. Juni 2008, 14:48

Hallo,
ich habe ein Problem: Ich muss Daten (in Form von langen Texten) an PHP übergeben.
Ich weiß das ich per url in PHP Variablen definieren kann, aber meine Daten sind dafür zu viel.
Deshalb würde ich das ganze gerne mit Mysql lösen, da ich meine Daten sowieso in Tabellen brauch.
Es ist kein Problem die Tabellen per Python zu füllen, das funktioniert einwandfrei.
Mein Problem ist nun, dass ich die Zugangsdaten für die Datenbank in dem Script speichern muss. Ich möchte das Programm später öffentlich zugänglich machen, und kann es mir natürlich nicht erlauben, dass jemand dieses Passwort sieht. Auch wenn das Programm nur als .exe verfügbar sein wird, ist es doch bestimmt möglich es auszulesen, oder?

Kann mir jemand sagen, wie man sowas am besten löst?

Danke schonmal!!
Gruß
LordMyder
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 13. Juni 2008, 15:21

Warum verschickst du die Daten nicht einfach per POST?
lordmyder

Beitragvon lordmyder » Freitag 13. Juni 2008, 15:23

Damit kann ich erstmal nix anfangen...=)
Wie meinst du das?
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 13. Juni 2008, 15:25

Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Freitag 13. Juni 2008, 15:42

Installier dir phpserialize: http://pypi.python.org/pypi/phpserialize/1.0

Dann kannst du sowas machen:

Code: Alles auswählen

from phpserialize import dumps
from urllib import urlopen, urlencode

urlopen('http://example.com/yourscript.php', urlencode({
    'data': dumps(deine_variable)
}))


Und in PHP

Code: Alles auswählen

$deine_variable = unserialize($_POST['data']);
TUFKAB – the user formerly known as blackbird
lordmyder

Beitragvon lordmyder » Freitag 13. Juni 2008, 15:46

Danke für den Tipp. Das Modul ist ganz cool.
Aber ich will ja größere Datenmengen "transportieren" und da die Länge einer URL begrenz ist, kann ich nicht so vorgehen um die Daten zu übermitteln.
Oder geht das doch?
Zuletzt geändert von lordmyder am Freitag 13. Juni 2008, 15:50, insgesamt 1-mal geändert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7471
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Freitag 13. Juni 2008, 15:49

Sollte man dann nicht langsam anfangen über eine temporäre Datei nachzudenken?
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Freitag 13. Juni 2008, 15:50

Wenn du die Daten mit POST verschickst, dann werden sie nicht in der URL codiert, dass ist ja gerade einer der Vorteile.
lordmyder

Beitragvon lordmyder » Samstag 14. Juni 2008, 13:59

Ich habe alles genauso gemacht wie es mitsuhiko beschrieben hat, aber irgendwie klappt das garnicht...
Es scheint als kommt nichts auf meiner Website an.

Code: Alles auswählen

from phpserialize import dumps
from urllib import urlopen, urlencode

urlopen('http://lordmyder.de/test.php', urlencode({'data': dumps("test1234")}))


Auf meiner Website in php:

Code: Alles auswählen

<?
$data = unserialize($_POST['data']);
setcookie("data", $data);
?>


Den Cookie kann ich dann zur Überprüfung auf einer anderen Seite auslesen, aber er ist stets leer...
Kann mir jemand sagen, was ich falsch mache?
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Samstag 14. Juni 2008, 18:15

lordmyder hat geschrieben:Den Cookie kann ich dann zur Überprüfung auf einer anderen Seite auslesen, aber er ist stets leer...
Kann mir jemand sagen, was ich falsch mache?

Aber das Cookie gilt nur für das Python script, das die Daten dort hinschaufelt. Um das zu debuggen mach ein "echo" statt setcookie und mach in python "print urlopen(...).read()"
Dann müsste im Python script wieder das ankommen, was du in PHP auch empfangen hast.
TUFKAB – the user formerly known as blackbird
lordmyder

Beitragvon lordmyder » Sonntag 15. Juni 2008, 11:40

Also ich weiß auch nicht, irgendwie scheine ich mich total doof anzustellen, aber ich kriege es ums verrecken nicht hin.
Ich habe jetzt alles so gemacht wie du gesagt hast:

Code: Alles auswählen

from phpserialize import dumps
from urllib import urlopen, urlencode

print urlopen('http://lordmyder.de/test.php', urlencode({'data': dumps("test1234")})).read()


Code: Alles auswählen

<?
$data = unserialize($_POST['data']);
echo $data;
?>


Aber das Python Script gibt nichts aus...

Was mache ich noch falsch?[/code]
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Beitragvon Trundle » Sonntag 15. Juni 2008, 11:55

Hint: Magic Quotes.
lordmyder

Beitragvon lordmyder » Sonntag 15. Juni 2008, 12:06

Den Hint verstehe ich nicht.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Beitragvon Trundle » Sonntag 15. Juni 2008, 12:12

Ein Feature von PHP, das wohl der Dummheit des Entwicklers entgegen kommen soll.

http://php.net/magic_quotes hat geschrieben:What are Magic Quotes
When on, all ' (single-quote), " (double quote), \ (backslash) and NULL characters are escaped with a backslash automatically. This is identical to what addslashes() does.


Da deine Daten, die du sendest, aber solche Zeichen enthalten, werden diese maskiert und ``unserialize`` kann mit den Daten dann nichts mehr anfangen.
lordmyder

Beitragvon lordmyder » Sonntag 15. Juni 2008, 12:21

Also bedeutet das für mich, dass ich so auch nicht vorgehen kann, oder?

Dann stellt sich für mich die Frage, wie kann ich meine Daten an PHP übergeben?

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder