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

file_get_contents(); Problem

Hallo,

undzwar habe ich ein Problem. Ich habe ein Formular gebaut. Die Daten, die man in das Formular einträgt, sollen per GET mit file_get_contents(); übertragen werden. Klappt auch wunderbar. Nur $_POST Parameter nimmt er nicht mit, aber Sachen, die aus der Datenbank abgefragt worden sind schon. Warum?

Also ich zeig euch mal die Beispiele:

HTML-Code
PHP:
<form action="test.php" method="post" name="form">
<input type="text" name="text" id="text" value="Kurzer Text" />
<input type="submit" name="submit" value="Abschicken" />
</form>

PHP-Code
PHP:
<?php
$post_text = $_POST['text'];
if( $post_text )
{
    $id   = $benutzer->id;
    $link = "http://meinedomain.com/api/save.php?user_id=$id&text=$post_text";
    echo $link; // Ausgabe ist: http://meinedomain.com/api/save.php?user_id=2&text=Hallo

    // $link ist also richtig, da das so ausgegeben wird wie es sein soll. Aber bei file_get_contents() wird $post_text nicht mit gegeben, also ist leer. Als wäre es garnicht abgeschickt.
    $hp  = file_get_contents( $link ); // Also so: http://meinedomain.com/api/save.php?user_id=2&text=Hallo
    
    // siehe untere Datei
    echo $hp; // Ausgabe: Ich bin "2". "HIER SOLLTE EIG Hallo STEHEN, STEHT ABER NICHT!".
}
?>

save.php Datei
PHP:
<?php
  echo 'Ich bin '.$_GET['user_id'].'. '.$_GET['text'].'.';
  // Wenn ich mit file_get_content() aufrufe, erscheint alles ausser $_GET['text']($_POST)
  // Wenn ich Link von $link kopiere, also manuell aufrufe, klappt es.
?>

Also gibt er mir irgendwie den $_POST Parameter nicht mit per file_get_content(); warum?
 
Werbung:
So geht's:

PHP:
<?php

ini_set('allow_url_fopen', '1');

if (count($_POST) > 0) {
    echo file_get_contents('http://' . $_SERVER['SERVER_NAME'] . '/'
            . $_SERVER['SCRIPT_NAME']
            . '?user_id=' . urlencode($_POST['user_id'])
            . '&text=' . urlencode($_POST['text']));
    exit;
}

if (count($_GET) > 0) {
    print_r($_GET);
    exit;
}

?><!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <title>New</title>
</head>

<body>
    
    <form action="" method="post">
        <p>User ID: <input type="text" name="user_id" /></p>
        <p>Text: <input type="text" name="text" /></p>
        <p><input type="submit" /></p>
    </form>

</body>

</html>

Was genau dein Fehler ist, konnte ich bisher nicht erkennen.
 
Hallo,

undzwar war doch an meinem Script kein Fehler, sondern: Für eMail Adresse musste ich die Funktion trim() noch benutzen, weil in der Datenbank einige eMail Adressen waren, wo hinter noch ein Leerzeichen war.
 
Werbung:
Zurück
Oben