Aufruf fremder Webseite und/oder automatisch ausfüllen und submit

Status
Nicht offen für weitere Antworten.

rernanded

Erfahrenes Mitglied
Hallo

auf einer html-Seite lasse ich ein image.php von einer php-Seite anzeigen.

Wird die html-Seite aufgerufen und damit das image angezeigt lass ich mir eine Mail senden. soweit so gut.

Frage:
Wie kann ich nun auf der php-Seite auch eine andere(fremde) Webseite aufrufen UND sogar dort ein Formular ausfüllen und submitten? Mein Server: allow_url_fopen = ON

Moni
html-Seite
HTML:
<img src="image.php">

php-Seite
PHP:
<?php
header("content-type: image/jpeg");
readfile("http://www.blablabla.de/image.jpg");
?>

<?php
$mailTo = 'blablabla';
$mailFrom = 'test';
$mailSubject    = 'test';

$mailText = "
test
";

$mailSent = @mail($mailTo, $mailSubject, $mailText, $mailFrom);
exit();
?>


fremde php-Seite

http://www.fremdeseite.de/suche.php
PHP:
...
<form action="search.php" method="post" name="search_now">
Suchwort 1<input type="text" name="search_1" onkeypress="return trackKeys(event,/[a-zA-Z]/);" />
Suchwort 2<input type="text" name="search_2" onkeypress="return trackKeys(event,/[a-zA-Z]/);" />
Suchwort 3<input type="text" name="search_3" onkeypress="return trackKeys(event,/[a-zA-Z]/);" />
    <input type="submit" value="suchen"/>
</form>
...
<?php
...
   include_once('search_connection.php');
 
   $search_1 = explode(" ",$_POST["search_1"]);
   $search_2 = explode(" ",$_POST["search_2"]);
   $search_3 = explode(" ",$_POST["search_3"]);
 
   try {
       $pdo = new PDO("mysql:host=$host;port=$port;dbname=$dbname", $username, $password);
   }
   catch(PDOException $e) {
       echo $e->getMessage();
   }
$count = count($search_1);
$count = count($search_2);
$count = count($search_3);
   for ($i=0; $i < $count; $i++) {

...
 
Zuletzt bearbeitet:
Hi

zuerst einmal siehst du dir in den Devtools von deinem Browser an, was beim Formularabsenden gesendet wird.
GET/POST, welche Datenfelder, usw.
 
.Ein bisschen ausführlicher gefällig?
1) Du suchst im entsprechenden Formular das "action"-Attribut.
2) Du suchst im entsprechenden Formular das "method"-Attribut.

Ist die Methode GET, dann kannst du die URL recht leicht bauen (müsste klar sein).
Mit POST: https://stackoverflow.com/questions/5647461/how-do-i-send-a-post-request-with-php

"Submit" macht eigentlich nichts anderes, als das Dokument,, das in "action" angegeben wird, aufzurufen, und im Falle von POST die Informationen etwas verdeckt, im Falle von GET die Informationen in der URL zu übermitteln.

Gruss
cwriter
 
@sheel @cwriter Habe ich probiert.

so klappts auch:
HTML:
<!DOCFILE html>
<html>
<head>
<script type="text/javascript">
function submit_form()
{
    document.myform.submit();
}
</script>
</head>
<body onload="submit_form();">
    <form method="POST" name="myform" action="http://www.fremdeseite.de/suche.php">
        <input type="hidden" name="search_1" value="mic"/>
    </form>
</body>
</html>

Aber NICHT wenn ich function, body onload und form in meiner php-Seite einbaue. Ich denke mal ich muß etwas mit curl versuchen.

MONI
 
Habe ich probiert.

so klappts auch:
?
Das ist nicht ansatzweise die angesprochene Methode?
JS ist im Client, PHP auf dem Server.
Deine Methode funktioniert nur, wenn der Client JS erlaubt (ist aber ansonsten auch gültig, falls du clientseitigen Code vorziehst).
Aber so ist es ja keine fremde Seite?
Es gibt schon Wege, es so zu machen, aber dafür würde ich eher AJAX verwenden.

Aber NICHT wenn ich function, body onload und form in meiner php-Seite einbaue.
Verstehe ich nicht. Ist der von dir gepostete Code nicht auf deiner Seite?

Gruss
cwriter
 
@cwriter Den zuletzt geposteten Code habe ich mit einer gesonderten Seite ausprobiert(also ohne header/readfile und mail) und damit klappts. Ich kann auf der fremden Seite submitten.
Wenn ich den Code aber in die eigentliche php-Seite einbaue(s.o. mein 1. Thread,), dann klappt es nicht.
Das ich dabei was falsch mache ist mir klar, nur eben was?

MONI

So klappts nicht:
PHP:
<?php
header("content-type: image/jpeg");
readfile("http://www.blablabla.de/image.jpg");
?>
<!DOCFILE html>
<html>
<head>
<script type="text/javascript">
function submit_form()
{
    document.myform.submit();
}
</script>
</head>
<body onload="submit_form();">
    <form method="POST" name="myform" action="http://www.fremdeseite.de/suche.php">
        <input type="hidden" name="search_1" value="mic"/>
    </form>

<?php
$mailTo = 'blablabla';
$mailFrom = 'test';
$mailSubject    = 'test';

$mailText = "
test
";

$mailSent = @mail($mailTo, $mailSubject, $mailText, $mailFrom);
exit();
?>
</body>
</html>
 
Du sagst dem Client mit header(), dass er ein Bild erwarten soll.
Dann schickst du ein Bild und hängst HTML-Code an, was für den Client dann wie unlogische Daten vorkommt; er erwartet ja ein Bild.
Daher wird das HTML nicht angeschaut und es funktioniert nicht, und das Bild wird nicht (korrekt) ausgegeben, denn die Bilddaten sind ja verunstaltet.

Gruss
cwriter
 
@cwriter Ist mir klar. Doch wie geht die Lösung? Das Bild wird korrekt angezeigt und das Mail korrekt versendet. Warum wird der php-Code für den Mailversand denn korrekt ausgeführt?
Ich sehe ja ein das js hier nicht klappen kann, aber es müsste doch per php möglich sein (Mailversand per php geht ja auch) auf einer fremden Seite zu submitten.
Ich hab einiges aus der von Dir empfohlenen Webseite stackoverflow ausprobiert, aber Fehlanzeige. Vllt. habe ich es auch falsch eingebaut???

MONI
 
Das ich dabei was falsch mache ist mir klar, nur eben was?
Warum wird der php-Code für den Mailversand denn korrekt ausgeführt?
o_O


Das Bild wird korrekt angezeigt und das Mail korrekt versendet. Warum wird der php-Code für den Mailversand denn
Der "Fehler" besteht ja darin, dass der Client den HTML-Code nicht als solchen anerkennt.
Dass das Bild korrekt angezeigt wird, dürfte eine Nettigkeit deines Browsers sein, der die Headerdaten des Bildes berücksichtigt und allen "garbage", der folgt, ignoriert.
Das alles hat aber mit PHP nichts zu tun.
Der PHP Server liest das Skript und schickt genau das, was angegeben ist.
In deinem Fall öffnet der Server die Datei und liest sie.
Er sieht das "<?php" und beginnt, den Code auszuführen.
Er liest "header" und führt diese Funktion aus, schreibt die Informationen also in den Outputbuffer.
Er liest "readfile" und schreibt den Dateiinhalt in den Outputbuffer.
Dann sieht er das "?>" und beendet die PHP-Ausführung. Alles, was folgt, wird direkt in den Outputbuffer geschrieben, bis wieder ein "<?php" kommt.
Dieses schickt dann bei dir das Mail.
Am Ende der Datei (oder schon davor, je nachdem) wird der Outputbuffer an den Client geschickt.
Erst dort wird klar, dass das HTML-Snipplet keinen Sinn macht; es wird ignoriert.

Ich hab einiges aus der von Dir empfohlenen Webseite stackoverflow ausprobiert, aber Fehlanzeige.
Die erste Antwort mit stream_context_create auch? Was ist denn dein Code dazu?
Oder verwendest du ein Uralt-PHP?

Doch wie geht die Lösung?
Ich weiss ja nicht mal, was genau du willst. Zuerst redest du von einer fremden Website, dann packst du HTML-Code rein, in eine Skriptdatei, die nur ein Bild anzeigen soll, weil du ein bisschen Tracking betreiben willst.
Jetzt willst du auch noch ein Formular ausfüllen, auf einer fremden Seite, wovon der Nutzer nichts mitkriegt, weil er ja nur ein Bild ansieht.
Der einzige Grund, der mir einfällt, so etwas zu tun, hat eher mit Spam/Phishing als mit legitimer Software zu tun, und es ist mir ehrlich gesagt ziemlich unwohl dabei.
Aber ich halte mich an die Unschuldsvermutung und frage lieber nochmals nach, was das eigentlich werden soll und welche legitime Nutzung du ins Auge fasst.
Fertigen Code bekommst du hier eher schwerlich; die Idee ist nicht, Gratisarbeit zur Verfügung zu stellen, sondern einen gemeinschaftlichen Aufwand zur Lernhilfe zu leisten oder konzeptuelle und spezifische Fragen zu beantworten.

Gruss
cwriter
 
@cwriter lass gut sein. es ist nicht so wichtig. danke für deine posts. ich will gar keinen fertigen code, aber ich will auch nicht unbedingt schlauer werden. ich will es nur irgendwie erledigt haben. dein/euer anspruch "gemeinschaftlichen Aufwand zur Lernhilfe zu leisten" muß ja nicht für jeden gelten. mit pishing hat das ganze auch nichts zu tun. und ich tue nur meinem chef einen gefallen der irgendwie mehrere server bei mehreren providern betreibt und feststellen will wieviele kunden welche bilder anschauen und texte lesen ... blablabla. und ich will einfach nur meinen job behalten weshalb ich manche dinge nebenbei erledige für die er gut und gerne einen fachmann beauftragen könnte. will er aber nicht und das kann ich ihm nicht einfach so vor den latz knallen. ich, alleinerziehend, auf den job angewiesen usw.

so und jetzt muß ich für meine tochter am sonntag das abendessen machen.

tschau.
 
Status
Nicht offen für weitere Antworten.
Zurück