Anhand von URL Parametern das Formularfeld Name ausfüllen; html;php

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du musst folgenden Code

<input name="name" size="42" style="width: 433px" type="text" value="" placeholder="Name" /><br />

durch den Code

<input name="name" size="42" style="width: 433px" type="text" value="<?php echo $_POST['name']; ?>" placeholder="Name" /><br />

ersetzen und die Datei als contact.php abspeichern.

Dein Server muss PHP unterstützen.

Ok, wenn ich die dann allerdings öffne bekomme ich den Quelltext nur angezeigt. Geht das nur wenn ich es erst hochgeladen habe?

0
@InteraKanal

Genau, der Server muss ja erst einmal die Datei verarbeiten, das funktioniert auf dem eigenen PC nur, wenn man auch einen Server wie z.B. Apache installiert hat. Wenn du es hochgeladen hast, müsste es funktionieren.

1
@D4V1D1998

Tut mir leid, ich habe mich vertan. Es muss

$_GET['name']

und nicht

$_POST['name']

heissen.

1

Danke, ich werde es gleich mal ausprobieren! :-)

0
@InteraKanal

Kein Problem :D Kannst ja meine Antwort als die Hilfreichste auszeichnen ;)

0
@D4V1D1998

werde ich machen! Ich hätte da noch eine Frage:

<br><b><font color="#0070C0">
            <a href="http://www.test.de/vhs/mobil/anmeldung.php?kursbezeichnung=XXXXX&amp;preis=12,00+">http://www.test.de/vhs/mobil/anmeldung.php?kursbezeichnung=XXXXX&amp;preis=12,00+</a>€&amp;datum=13.02.2015&amp;uhrzeit=18.30+-+20.30+Uhr">GXXXXX Angebot 1</a></font></b><br><br><br><br>Termin: Freitag, <b>13.02.2015, 18.30 - 20.30 
        Uhr</b><br><br>Teilnehmergebühr: 12,00 € inkl. 
        Skript und Übungsmaterial<br><br><br>
            <span lang="de">
            <a href="http://www.test.de/vhs/mobil/anmeldung.php?kursbezeichnung=XXXXX&quot;+-+theoretisch+und+praktisch&amp;preis=12,00+">http://www.test.de/vhs/mobil/anmeldung.php?kursbezeichnung=XXXXX&quot;+-+theoretisch+und+praktisch&amp;preis=12,00+</a>€&amp;datum=13.02.2015&amp;uhrzeit=18.30+-+20.30+Uhr">
            Anmelden</a></span><br><br><br><b>

Und von diesen ... Angeboten habe ich sehr sehr viele und hätte da gerne, dass er anhand der schon dastehenden Informationen die automatisch in den Link baut, sodass ich die nicht immer nochmal reinschreiben muss. Wie kann ich das umsetzen? Mithilfe von id oder so? Könntest du da vielleicht kurz was zusammenbasteln, wenn es nicht zu viel arbeit macht? Danke schon mal ^-^

0
@InteraKanal

Wenn man beispielsweise alle Kurse in eine XML-Datei packen würde, ließe sich das leicht etwas realisieren. Die XML-Datei sollte dann z.B. so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<kurse>
    <kurs>
        <kursbezeichnung>XXXXX</kursbezeichnung>
        <name>KURSNAME</name>
        <preis>12,00 €</preis>
        <info>inkl. Skript und Übungsmaterial</info>
        <datum>13.02.2015</datum>
            <tag>Freitag</tag>
        <uhrzeit>18:30 - 20:30</uhrzeit>
    </kurs>
    <kurs>
        <kursbezeichnung>XXXXX</kursbezeichnung>
        <name>KURSNAME2</name>
        <preis>10,00 €</preis>
        <info>inkl. Übungsmaterial</info>
        <datum>14.02.2015</datum>
            <tag>Samstag</tag>
        <uhrzeit>18:00 - 20:00</uhrzeit>
    </kurs>
</kurse>

Das PHP-Skript würde so aussehen:

<?php
    $xml = simplexml_load_file("pfad/zur/datei.xml");
    foreach($xml->children() as $child)
    {
        echo '<br /> . "\n"';
        echo '<b><font color="#0070C0">' . "\n";
        echo '<a href="test.de/vhs/mobil/anmeldung.php?kursbezeichnung=' . urlencode($child->kursbezeichnung) . '&preis=' . urlencode($child->preis) . '&datum=' urlencode($child->datum) . '&uhrzeit=' . urlencode($child->uhrzeit) . '">';
        echo htmlspecialchars($child->kursbezeichnung);
        echo '</a>' . "\n";
        echo '</font></b>' . "\n";
        echo '<br /><br /><br /><br />' . "\n";
        echo 'Termin: ' . htmlspecialchars($child->tag) . ', <b>' . htmlspecialchars($child->datum) . ', ' . htmlspecialchars($child->uhrzeit) . ' Uhr</b>' . "\n";
        echo '<br /><br />' . "\n";
        echo 'Teilnehmergebühr: ' . htmlspecialchars($child->preis) . htmlspecialchars($child->info) . "\n";
        echo '<br /><br /><br />' . "\n";
        echo '<span lang="de">' . "\n";
        echo '<a href="test.de/vhs/mobil/anmeldung.php?kursbezeichnung=' . urlencode($child->kursbezeichnung) . '&preis=' . urlencode($child->preis) . '&datum=' urlencode($child->datum) . '&uhrzeit=' . urlencode($child->uhrzeit) . '">';
        echo 'Anmelden';
        echo '</a>' . "\n";
        echo '</span>' . "\n";
        echo '<br /><br /><br />';
    }
?>

Hast du eigentlich jemals etwas von CSS gehört? Du benutzt immer wieder Sachen wie z.B. "br" oder "font", teilweise auch "b", diese sollte man heutzutage nicht mehr benutzen.

Ich muss leider ganz offen sagen, dein Code ist teilweise echt grausam. Du rückst alles mögliche ein und setzt Zeilenumbrüche sehr unpassend.

Kannst du mir vllt mal sagen, wofür deine Seite eigentlich sein soll? Vllt schickst du uns mal einen Link zu dieser.

TeeTier hat bereits angemerkt, dass möglicherweise bei dem anderen Code XSS-Attacken durchgelassen werden, also verwendest du für deine erste Frage am besten folgenden Code:

<input name="name" size="42" style="width: 433px" type="text" value="<?php echo htmlspecialchars($_GET['name']); ?>" placeholder="Name" /><br />
0

Oh mein Gott, so etwas sollte man aber eigentlich nie machen!

Das ist eine dicke fette XSS-Lücke! Bitte die Strings, die man aus dubiosen Quellen (also GET, POST, COOKIE, etc.) bekommt, IMMER escapen!

So etwas hier ist gefährlich! ><

0
@PerfectMuffin

Das gibt es wirklich leider SEHR oft ... und solche Websites haben dann meistens obendrein noch eine SQL-Injection-Lücke, und hoffnungslos veraltete Serversoftware ... oder einen Adminbereich ohne völlig ohne Passwortabfrage. Alles schon gesehen. :)

0

Das sind nur öffentliche Daten, keine persönlichen. Was meinst du mit escapen? Hast du eine Lösung zu vorheriger Frage vielleicht? Und Muffin, was meinst du damit?

0
@InteraKanal

Du hast folgendes Snippet gepostet (Auszug):

... value="<?php echo $_POST['name']; ?>" ...

Damit kann man einem Benutzer das Session-Cookie klauen und u.U. seinen Account auf der Webseite übernehmen, die dieses Skript enthält. Oder Malware einschleusen ... oder den Inhalt der Website nach belieben verändern ... oder eine Weiterleitung auf eine Schweinkramseite einrichten ... oder, oder, oder ...

Du solltest unbedingt darauf achten, dass "name" aus dem POST-Request keine Sonderzeichen mehr enthält, die sich missbrauchen lassen. So etwas nennt man Escaping. In diesem Falle wäre " ein solcher Kandidat. :)

Der entsprechende Teil müsste dann so aussehen:

... value="<?php echo htmlspecialchars($_POST['name']); ?>" ...

Guck dir mal folgenden Link an: PHP Dokumentation

0
@TeeTier

Es ist natürlich sinnvoll, noch htmlspecialchars zu benutzen. Da hier die Inhalte aber nur ausgegeben werden, sollte es doch eigentlich kein Problem mit Sonderzeichen geben. Wichtig ist es aber, dass die Daten, wenn man das Formular abschickt, auf der aufgerufenen Seite gefiltert werden, da sie möglicherweise gespeichert werden.

0

Was möchtest Du wissen?