# PHP (Datei) Code auf einem anderem Server ausführen



## Twister_chen (28. Dezember 2006)

Hallo

Ich möchte mal kruz mein Problem beschreiben und entschuldige mich gleich mal sollte das Thema schon mal vorhanden sein, konnte aber nichts dazu finden weil ich nichtmal weis wonach oder wie ich danach suchen könnte.

server 1 / datei1.php

```
$var = "Hallo";

function_zum_ausführen_auf_einem_anderen_server("http://domain.de/datei2.php?var=$var");
```

server 2 / datei2.php

```
echo $var;
```

Ich denke mal so ist das am besten beschrieben wie ich das meine, sollte das doch nicht verständlich sein werde ich gerne das noch etwas beschreiben, hoffe trotzdem auf eure hilfe und bedanke mich schon im Vorraus.


Gruss
Twisterchen


----------



## ByeBye 152404 (28. Dezember 2006)

Du hast leider nicht beschrieben was du bezwecken möchtes. Willst du eine Varibel übergeben? Bitte erläutere was du mit deinem Script bezwecken möchtes.


----------



## Twister_chen (28. Dezember 2006)

Ich möchte von dem 1 Server Daten an den 2 Server übergeben und die dann auf dem 2 Server in MySQL speichern, möchte aber MySQL nicht direkt ansprechen sondern so wie ich es gezeigt habe.

Vielleicht gibt es ja auch eine schönere Variante die ich noch gar nicht in betracht bezogen habe.

Wäre für tips zur Lösung sehr dankbar.

Gruss
Twisterchen


----------



## ByeBye 152404 (28. Dezember 2006)

Naja kommt drauf an was du alles Übergeben möchtes. Wen es nur ein Wort wie "Hallo" ist kannst du das sicherlich per URL machen.

Hier mal ein kleines Beispiel:

Datei1:

```
$var = "Hallo";
header("Location: http://domain.de/datei2.php?var=".$var);
```

Datei2:

```
$var = $_GET[var];
echo $var;
```

header() leitet direckt beim aufrufen des Scripts um. Gibt hier aber auch noch andere Möglichkeiten.

Nur bei größeren Datenmengen ist diese Methode aufjedenfall ungeeignet. Außerdem ist sie unsicher.

Ich würde wenigstens noch das mit anfügen (in der 2. Datei)


```
$var = $_GET[var];
$invalide = array('/','/\/',':','.');
$var = str_replace($invalide,' ',$var);

echo $var;
```


----------



## Twister_chen (28. Dezember 2006)

Hallo

hätte ich vielleicht erwähnen sollen das das mit header nicht mein Fall währe das wusste ich schon, welche möglichkeiten gäbe es denn noch ?

Gruss

Twisterchen


----------



## Dr Dau (28. Dezember 2006)

Hallo!

Per anklickbaren Link (vom Prinzip also genauso wie per header()).

Gruss Dr Dau


----------



## ByeBye 152404 (28. Dezember 2006)

Jo, oder hier das dürfte auch gehen 


```
$var = "Hallo";
echo '<meta http-equiv="refresh" content="5;URL="http://domain.de/datei2.php?var='.$var.'">Sie werden weitergeleitet.<br>';
```


----------



## Twister_chen (28. Dezember 2006)

@Dr Dau

Das ist keine gute Lösung den das soll ja automatisch ablaufen, währe sowas mit fopen oder ähnlichem möglich ?

Muss ich noch erwähnen, das ganze soll auf dem 1 Server dann weiterlaufen, spriche nur die Datei auf dem 2 Server ausführen aber auf dem 1 Server mit der datei1.php weiterarbeiten.

Gruss
Twisterchen


----------



## ByeBye 152404 (29. Dezember 2006)

Wen es wirklich automatisch laufen soll müsstes du es mal mit Cronjobs versuchen.

Und erläutere deine Problematik und deine Ansprüche bitte genau damit die Leute die dir helfen möchten wissen worauf sie achten müssen.

Oder öffne es einfach über:

```
file("http://domain.de/datei2.php?var=".$var);
```


----------



## theCean (29. Dezember 2006)

Ansonsten könntest du es noch per iframe und einem javascript der den iframe bei bestimmten aktionen updatet versuchen, ungefähr so:

```
<a href="auszuführende_datei.php" target='meinframe'>Klick mich</a>
<iframe name="meinframe" class="unsichtbar" src="..."></iframe>
```
Ist zwar jetzt auch per Klick geregelt aber verdeutlicht glaub ich was ich mein 
Hiermit könntest du die ausführung in eine seite einbauen die nebenher weiterläuft wie du es wolltest...


----------



## puckido (29. Dezember 2006)

Wenn ich ihn richtig verstanden habe, könnte er ja bei aktiviertem allow_url_fopen auch einfach etwas wie:

```
$handle = fopen ("http://domain.de/datei2.php?var=".$var, "r");
```

machen, oder nicht? Dann könnte er evtl. sogar noch gewisse Variablen, etc. per Stream auslesen 

Hoffe geholfen zu haben 

EDIT: OK sry, hatte überlesen das K4ZUY4 praktisch dasselbe gepostet hat, sry ist schon spät ^^ Gute nacht


----------



## Twister_chen (29. Dezember 2006)

Hallo

Erstmal danke schonmal für eure Antworten und für die Hilfe, ich versuch das ganze nochmals zu erläutern.

Ich habe ein Formular auf Server1 die daten werden an ein PHP Script übergeben und auf Richtigkeit geprüft IF(richtig == ok) werden die Daten in MySQL gespeichert gleichzeitig sollten die Daten aber auch auf Server2 in der MySQL gespeichert werden : ohne MySQL direkt anzusprechen ohne header und meta Weiterleitungen.
Noch zu erwähnen ist das ich keine Ausgabe mit echo von Server 2 brauche ich sitzte immernoch an Server 1 mit der Ausgabe von meinem PHP Script das mir sagt die Daten wurden gespeichert.
Das ganze soll einfach im Hintergrund ablaufen.

ich habe das mal mit file() versucht und bekomme folgende Fehlermeldung


```
$var = "suoperlolllo";
file("http://192.168.100.22/test1.php?var=".$var);
```


```
Warning: file(http://192.168.100.22/test1.php?var=suoperlolllo) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 404 
Not Found in /opt/lampp/htdocs/test.php on line 3
```

Vielleicht ergibt sich doch noch eine Lösung 

Vielen Dank

Gruss Twisterchen


----------



## puckido (29. Dezember 2006)

Warum möchtest du MySql auf Server 2 nicht direkt ansprechen? Das ergibt für mich irgendwie keinen Sinn  

greets


----------



## Twister_chen (29. Dezember 2006)

Ich möchte keine Verbindungen für MySQL von aussen zulassen !


----------



## puckido (29. Dezember 2006)

Findest du es nicht ein bisschen unsicherer ein PHP Script ins Netz zu setzen mit dem jeder der den Namen und die Argumente kennt alles beliebige in deine Datenbank schreiben kann, als Zugriff auf MySQL von aussen zuzulassen? Musst halt n langes Passwort + einen non-standart Benutzername wählen!

Sogar grosse Hoster wie server4you lassen ihre MySQL Datenbank nach aussen offen!!

Aber wenn du das nicht willst kann ich dir auch keine Lösung anbieten....

greets


----------



## Twister_chen (29. Dezember 2006)

Hallo 

hmmm schade aber MySQL zu öffnen kommt für mich nicht in Frage aber vielleicht hat jemand anderes noch ein Praktikable Lösung.


Gruss

Twisterchen


----------



## ByeBye 152404 (29. Dezember 2006)

Was sagt dir diese Fehlermeldung den?


```
Warning: file(http://192.168.100.22/test1.php?var=suoperlolllo) [function.file]: failed to open stream: HTTP request failed! HTTP/1.1 404 
Not Found in /opt/lampp/htdocs/test.php on line 3
```

Ja er kann die Datei nicht finden bzw. nicht drauf zugreifen. Überprüfe nochmal deine Eingaben. Und welcher wert hat dein _allow_url_fopen_.


----------



## Twister_chen (29. Dezember 2006)

Hallo 

klar du sagst es erkann Sie auch nicht finden weil die Datei da gar nicht ist ich werde das nochmal Testen.

Gruss
Twisterchen


----------



## Twister_chen (29. Dezember 2006)

Hallo

Also ich habe das nun getestet und es funktioniert einwandfrei, nur würde ich gerne jetzt noch ein paar Tips zur Sicherheit hören was dafür spricht oder was dagegen sprechen würde zu der Lösung 

Wenn jemand die Datei kennt dann kann jeder was in die Datenbank schreiben ok währe in diesem Fall nicht allzu schlimm nur könnte sich daraus ein Sicherheitsproblem ergeben ?


Gruss
Twisterchen


----------



## ByeBye 152404 (29. Dezember 2006)

Naja erstens ist die Übergabe von großen Datenmengen recht schwierig, also nur für kleine Projekte geignet. Wen du den Code den ich hier schonmal reingeschrieben habe benutzt filterst du schonmal Dinge raus die vl. nicht mit rein sollen. Auserdem würde ich noch _strip_tags()_ anwenden damit nicht HTML Code in die Datenbak gelangt. Das schreiben in die DB sollte natürlich auch über _mysql_real_escape_string()_.
Damit dürftes du weitesgehend gegen SQl-Injektionen geschützt sein.

Aber das größte Problem ist das wen jm. den Link kennt dir einfach Unmengen von Daten in deine Datenbank schreiben kann. Was vl. nicht direckt gefährlich ist aber dafür umso nerviger.


----------



## Twister_chen (29. Dezember 2006)

Hallo 

Ok es ist ein kleines Projekt vielleicht 4-5 Parameter die übergeben werden darin sind aber keine Passwörter enthalten

Die Daten die gespeichert werden sind nur zur Auswertung und werden von keinem CMS oder ähnlichem verarbeitet.

Das mit dem Link wenn den einer kennt ok da werde ich mir noch was überlegen da gibts bestimmt ne möglichkeit.

Vielen Dank für eure Hilfe

Gruss
Twisterchen


----------



## puckido (29. Dezember 2006)

Du könntest auch zur Laufzeit ein Passwort als Argument mitgeben, hilft wenigens etwas gegen Störenfriede :suspekt:

greets


----------

