• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Text einlesen und Seite öffnen

HyperStorm

Neues Mitglied
Hi, ich bastel gerade etwas an einer Website und hätte da eine Frage:

Ich habe eine Homepage in die der User einen persönlichen Code eingibt (kein Passwort, nur ein paar Zahlen).
Dieser Code soll nun in einen Link integriert werden so dass sich beim Absenden eine neue Seite mit diesem Link öffnet.

Beispiel:
Der User gibt ein: "karte251220121737".
Nun wird der Code integriert so dass der Link hinterher so aussieht:
"http://www.[homepage].de/karte251220121737.htm".
Dieser Link soll sich nun in einer neuen Seite (oder auf der gleichen, ist eigl. egal) öffnen.

Das Formular und die Datei die die Formulardaten erhält sind kein Problem, aber wie
öffne ich den Link mit dem integrierten Code?

MfG und schöne Feiertage
HyperStorm
 
Werbung:
Im prinzip nicht schwer:
(schnell zusammengeschrieben)
PHP:
$post = htmlspecialchars(mysql_real_escape_string($_POST['code']));

if(isset($post) && is_real_code($post)){
header("Location: seite.php?code=".$post);
}else{
echo "Dieser Code ist ungültig!";
}

Die Funktion is_real_code() müsstest du dann noch schreiben, in welcher du zum Beispiel checkst ob dieser Code wirklich einer von deinen ist. (also z.B. in einer mysql Datenbank)

damit es so: "http://www.[homepage].de/karte251220121737.htm".

aussieht müsstest du es einfach mit .htaccess und mod_rewrite umschreiben.
 
Fragen an ge_fabian:

  1. Was soll das mysql_real_escape_string?
  2. Warum isset($post) und nicht am Anfang ein isset($_POST['code'])?
  3. Was soll is_real_code sein?
  4. Was willst du mit dieser Header-Anweisung erreichen? Aus POST ein GET machen? Erscheint sinnlos!
  5. Warum wird nicht geprüft, ob es sich um eine lokale Datei handelt und auch aufgerufen werden darf?

Nicht böse gemeint, aber ich halte es für fahrlässig, wenn man einem Anfänger so ein Script vor die Füße wirft.
 
Werbung:
Ganz richtig erkannt, ich bin ein Anfänger was php angeht und kenne höchtens ein paar Befehle
und wie ich sie zusammen setze. ^^

Wie wäre denn der richtige Code für mein Anliegen?
 
Ungetestet
PHP:
// Code gesetzt
if (isset($_POST['code']))
{
    // keine URL
    if (! filter_var($_POST['code'], FILTER_VALIDATE_URL))
    {
        // Dateiname zusammensetzen
        $file = $_POST['code'] . ".htm";
        
        // eventuelles Verzeichnis wegnehmen
        $file = basename($file);
        
        if (file_exists($file))
        {
            header ("Location: http://" . $_SERVER["HTTP_HOST"] . "/" . $file);
            exit;
        }
        else
          echo "Datei existiert nicht";
    }
    else
      echo "URL's nicht erlaubt";
}
else
  echo "Keine Parameter";
Besser wäre noch, wenn die erlaubten Dateien in einem eigenen Verzeichnis liegen oder die Namen in einer DB oder Textdatei verdrahtet sind.
 
Das sieht schonmal super aus, nur wenn ich das anpasse und alles richtig übergebe
komme ich beim absenden nur die view.php, worin sich dein Code befindet, aber nicht auf die gewünchte Seite.
 
Werbung:
Was soll ich sagen? Ich kenne das Formular nicht und das komplette Script auch nicht.
 
Also das Formular ist erstmal zum testen ganz einfachen gehalten:

HTML:
<form action="view.php" method="post">
<p>Bezeichnung: <input type="text" name="code" /></p>
<input type="submit" value="Betrachten" />
</form>

Man gibt den Code ein und klickt auf "Betrachten".

Nun die view.php:
PHP:
// Code gesetzt
if (isset($_POST['code']))
{
    // keine URL
    if (! filter_var($_POST['code'], FILTER_VALIDATE_URL))
    {
        // Dateiname zusammensetzen
        $file = $_POST['code'] . ".htm";
        
        // eventuelles Verzeichnis wegnehmen
        $file = basename($file);
        
        if (file_exists($file))
        {
            header ("Location: http://" . $_SERVER["HTTP_HOST"] . "/" . $file . "/" . $file . "htm");
            exit;
        }
        else
          echo "Datei existiert nicht";
    }
    else
      echo "URL's nicht erlaubt";
}
else
  echo "Keine Parameter";

Deshalb zwei mal $file weil die .htm Seite in einem Ordner liegt die die gleiche Bezeichnung hat, z.B. http://www.xyz.de/KarteXYZ/KarteXYZ.htm
 
Werbung:
Ok, dann sollte es eigl. so gehn:

PHP:
// Code gesetzt
if (isset($_POST['code']))
{
    // keine URL
    if (! filter_var($_POST['code'], FILTER_VALIDATE_URL))
    {
        // Dateiname zusammensetzen
        $file = $_POST['code'] . ".htm";
        
        // eventuelles Verzeichnis wegnehmen
        $file = basename($file);
        
        if (file_exists($file))
        {
            header ("Location: http://" . $_SERVER["HTTP_HOST"] . "/" . $$_POST['code']. "/" . $file);
            exit;
        }
        else
          echo "Datei existiert nicht";
    }
    else
      echo "URL's nicht erlaubt";
}
else
  echo "Keine Parameter";

Da komme ich beim absenden aber auch nur auf http://www.XYZ.de/view.php.
 
Oh mein Gott, manchmal bin ich echt sowas von doof -.-
Ich habe statt <?php ... ?> ein <php? ... ?> geschrieben.

Jetz funktioniert es :)
Vielen Dank nochmal :)

EDIT: Oh man ey, ein Problem jagt das nächste, ich hasse es Anfänger zu sein ^^
Ich habe das ganze per iframe in die Homepage eingebunden.
Nun öffnet sich die gewünchte Seite in diesem iframe, was natürlich sehr unforteilhaft ist. Wäre evtl. doch besser wenn einfach ein neues Fenster geöffnet würde.

PS: Wäre evtl. noch gut zu erwähnen dass ich die Homepage mit dem Web Designer 7 von MAGIX gestalte.
 
Zuletzt bearbeitet:
Werbung:
Ein Formular kannst du auf deiner Seite hinpacken, wohin du willst, idealerweise in einen Container (div)
 
Werbung:
Du meinst so:
HTML:
<div style="position: absolute; left: 252px; top: 284px; width: 471px; height: 111px;">
<form action="view.php" method="post">
<p>Bezeichnung: <input type="text" name="code" /></p>
<input type="submit" value="betrachten" /></form>
</div>

?

Edit: Jaaaa es funktioniert wie gewollt :)
Jetz muss ich das ganze nur noch i.wie für den Beutzer schön verpacken,
weil einfach ein Formular mit nix dahinter sieht i.wie schräg aus ^^

Vielen vielen Dank nochmal und sry für die ganzen blöden Fragen :)
 
Vom Prinzip her schon, wobei eine absolute Positionierung in den meisten Fällen unnötig ist. Da wir aber deine Seite nicht kennen, kann man dazu nicht viel sagen.
 
Zurück
Oben