PHP variable zu einen anderen PHP senden

hallo leute, ich hab mal ne frage.
Ich komm einfach nich weiter :unamused:

und zwar habe ich auf meiner index.php 4 variablen zufällig generieren lassen und möchte diese nun in meiner send.php verwenden.
Wie kriege ich bloß diese verdammten variablen in meine send.php

Hier die scripts:
index.php

[code]<?php

// Session starten

// Alten CAPTCHA-Code aus der Session loeschen

unset($ZufallString1);
unset($ZufallString2);
unset($ZufallString3);
unset($ZufallString4);

// Sicherheitscode generieren

$AlphaNumerischerString = “1234567890”;

$ZufallString1 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

$ZufallString2 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

$ZufallString3 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

$ZufallString4 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

?>

 
Name:
Email:
Betreff:
Wieviel ist <?php echo($ZufallString1)?> mal <?php echo($ZufallString2)?> plus <?php echo($ZufallString3)?> minus <?php echo($ZufallString4)?>:
Text:
Option:
[/code] und nu die send.php [code]<? // Wir legen eine Variable mit deiner E-Mail $ihremail = "--------------------"; // Lege nun eine leere Variable für Fehler an (wird später benötigt) $error = ""; // Inhalt aus den Formularen übertragen "Name" $name = $_POST['name']; // Inhalt aus den Formularen übertragen "Email" $email = $_POST['email']; // Inhalt aus den Formularen übertragen "Betreff" $betreff = $_POST['betreff']; // Inhalt aus den Formularen übertragen "Nachricht" $text = $_POST['text']; // Text $aufgabe = $_POST['aufgabe']; $Submit = $_POST['Submit'];

$_GET (’$ZufallString1’);
$_GET (’$ZufallString2’);
$_GET (’$ZufallString3’);
$_GET (’$ZufallString4’);

// Sende Button
// Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist
// das machen wir mit eregi() wir prüfen nicht nur ob “@” und “.” vorhanden ist sondern auch
// 2 bustaben vor “@” und nach dem “@” da sind.
function mailcheck($mail) {
$mail = eregi("^[a-z0-9]+([-.]?[a-z0-9])
+@[a-z0-9]+([-
.]?[a-z0-9])+.[a-z]{2,4}", $mail); // Hier läuft das ab
return $mail; // wir geben die E-Mail zurück
}
// Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty)
//wenn das feld “Name” nicht ausgefüllt wurde geben wir der leeren $error Inhalt
// Also die Ausgabe "Sie haben keinen Namen angegeben."
if(empty($name)) $error .= “

  • Sie haben keinen Namen angegeben.
  • ”;
    // das gleiche mit "Email"
    if(empty($email)) $error .= “
  • Sie haben keine E-Mail angegeben.
  • ”;
    // hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe
    if(mailcheck($email)) $error .= “
  • Ihre E-Mail ist ungültig
  • ”;
    // für das Feld "Betreff"
    if(empty($betreff)) $error .= “
  • Es wurde kein Betreff ausgewählt.
  • ”;
    // für Nachricht
    if(empty($aufgabe)) $error .= “
  • Bitte löse die Rechenaufgabe.
  • ”;
    if(empty($text)) $error .= “
  • Sie haben kein Text angegeben.
  • ”;
    // if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button “Absenden” angeklickt wurde
    // Dann springt das runter und wir holen uns die übertragene Daten
    if ($aufgabe == $ZufallString1){ //[b]hier will ich mit den variablen rechnen können[/b]
     if(empty($error) && $Submit == "Absenden" ) {
    // wir machen das ganze in eine Variable "$nachricht"
    $nachricht = "Email von ".$name."nn".
                "Name: ".$name."n".
                "Email: ".$email."nn".
                "Betreff: ".$betreff."n".
                "Nachricht: ".$text;
    $subject = "$betreff";
    $nachricht1 = $email . "nn" . $nachricht;
    // hier setzen wir unsere mail() funktion ein das muss genau so ausehen
    // mail($anwem,$subject,$den den ganzen inhalt, unbedingt "FROM:" also von wem)
    
    
    mail($ihremail,$subject,$nachricht1,"FROM: $email");
    
    
    // hier fragen wir wieder ein Error ein:
    

    if(empty($error)) {
    // wir geben dann hier ein dass alles ok ist
    echo “Nachricht wurde erfolgtreich verschickt


    • Name: $name

    • Email: $email

    • Betreff: $betreff

    • Nachricht: $text

    ”;
    // Wenn es nicht stimmt
    } else {
    echo “Folgender Fehler ist aufgetreten

    Ihre Nachricht konnte nicht gesendet werden:

      $error
    ”;
    }}}

    else {echo “

  • Du scheinst kein Mathegenie zu sein :wink: Probiers noch einmal!
  • ”;}
    ?>[/code]

    Wenn du sie in send.php brauchst - warum erzeugst du sie dann nicht in send.php?

    Per Session, oder, da du eh schon ein Formular zum Aufruf der send.php verwendest, per hidden fields.

    OK, hidden fields wirst du wohl eher nicht wollen, wenn da was von Captcha steht.
    Also dann Session.
    Du hast zwar schon einen Kommentar
    // Session starten
    drin, aber das du wirklich eine Session startest, davon sehe ich nichts.

    [quote]// Alten CAPTCHA-Code aus der Session loeschen
    unset($ZufallString1);[/quote]
    Dein Script arbeitet doch wohl hoffentlich nicht wirklich unter der Annahme, dass register_globals=on waere?

    Das “Umkopieren” von per GET/POST hereinkommenden Werten vor ihrer Verwendung ist uebrigens bloedsinnig, das solltest du lassen - einer $_GET/$_POST-Variablen sieht man im Scriptverlauf wenigstens noch an, welcher Herkunft sie ist.

    Und was
    $_GET (’$ZufallString1’);
    sein soll, muesstest du auch mal erklaeren.

    ich bin ein noobi ^^
    ich bastel da jetzt schon zwei wochen dran hab mir nen haufen scripts angeschaut mich über die funktionen belesen aber nicht viel verstanden.
    Wie meinst du das mit Session, ich meine ich hatte vorher den Befehl sessionstart () oÄ drin aber dann hab ich immer fehlermeldungen bekommen.
    —edit—

    [quote]Und was
    $_GET (’$ZufallString1’);
    sein soll, muesstest du auch mal erklaeren.[/quote]
    ich dachte damit kann ich die variable hohlen klappt aber nich

    weil ich diese auch in der index.php brauche, somit is das doch eigentlich egal wo sie stehen?
    hab ja dann das problem nur andersherum

    Dann mach dir mal schlau zum Thema Sessions:
    tut.php-quake.net/de/sessions.html

    tut.php-quake.net/de/get.html

    so jetzt bekomm ich in meiner index.php diese Meldung

    [quote]Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /users/luebbenaueratzen/www/Anmeldung/index.php:2) in /users/luebbenaueratzen/www/Anmeldung/index.php on line 7

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /users/luebbenaueratzen/www/Anmeldung/index.php:2) in /users/luebbenaueratzen/www/Anmeldung/index.php on line 7[/quote]

    aber das formular ist zu sehen :wink:

    die codes sehen jetzt so aus
    index.php

    [code]<?php

    // Session starten

    session_start();

    // Alten CAPTCHA-Code aus der Session loeschen

    unset($ZufallString1);
    unset($ZufallString2);
    unset($ZufallString3);
    unset($ZufallString4);

    // Sicherheitscode generieren

    $AlphaNumerischerString = “1234567890”;

    $ZufallString1 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

    $ZufallString2 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

    $ZufallString3 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

    $ZufallString4 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );

    $_SESSION[“ZufallString1”] = ‘$ZufallString1’;
    $_SESSION[“ZufallString2”] = ‘$ZufallString2’;
    $_SESSION[“ZufallString3”] = ‘$ZufallString3’;
    $_SESSION[“ZufallString4”] = ‘$ZufallString4’;

    $sessionname = session_name();
    $sessionid = session_id();
    echo (“Link”);
    ?>
    [/code]
    und in der send.php

    <? session_start() $_GET ['ZufallString1']; $_GET ["ZufallString2"]; $_GET ["ZufallString3"]; $_GET ["ZufallString4"];

    Und natuerlich hast du dich informiert, was diese Meldung bedeutet …?

    In der Meldung steht, dass session_start in Zeile 7 stuende - in deinem gezeigten Code ist’s aber Zeile 4 - also hast du wohl noch Leerzeilen davor?

    Wusch!!!

    ich wusste ja nich das es auf lehrzeilen ankommt :unamused:
    tut mir leid das ich dich so belaste ^^
    jetzt haut das schon mal hin freu
    hab auch schon nen bissel was am script geändert falls dus gesehen hast :wink:

    Fein - dann darfst du dich als naechstes informieren, wieso
    $_SESSION[“ZufallString1”] = ‘$ZufallString1’;
    unsinnig ist - nachzulesen auf php.net/manual/en/language.types.string.php

    sry aber da steig ich garnet mehr durch kannst du mir net sagen was daran unsinn ist?

    Alles was innerhalb von ’ ’ steht, wird 1zu1 übernommen, das heißt deine Variable enthält dann den String “$ZufallString1” :wink:

    Zum einen wegen dem, was Michi schon sagte - was du auch auf der verlinkten Seite haettest nachlesen koennen. (Wer Programmieren will, muss auch mal lernen, technische Dokumentationen wie Handbuecher zu lesen und zu verstehen!)

    Und zum anderen ist es natuerlich bloedsinnig, an dieser Stelle die Variable ueberhaupt in einen String verpackt notieren zu wollen.

    Die Hochkommata oder Anfuehrungszeichen braucht es dann, wenn du in PHP Text notieren willst - damit PHP weiss, was das sein soll.

    Das muss man hier auf diese (oder eine der anderen moeglichen) Schreibweise notieren, damit der Parser weiss, was er damit anfangen soll.

    Wenn du jetzt einen Text aber bereits als Inhalt einer Variablen vorliegen hast, dann sind wir schon einen Schritt weiter, als beim Parsing des Scriptes - naemlich bei der Ausfuehrung.
    Wenn du jetzt den Text, der in unserer Variablen $variable steht, einer anderen Variablen zuweisen willst - dann schreibst du das einfach so:

    Wozu sollen an der Stelle irgendwelche Hochkommata, Anfuehrungszeichen oder sonstige Zeichen, die dem Parser sagen wuerden, “hier kommt jetzt Textinhalt”, gut sein?

    Eben, zu gar nichts - sie sind an dieser Stelle vollkommen ueberfluessig und bloedsinnig.

    So danke für die vielen Informationen :wink:
    Das mit dem Techtexten is ja auch verständlich was du da sagst. Nur ich habs net so wirklich verstanden weils englisch war und son Englischprofi bin ich leider nich. Habs jetzt aber hinbekommen :wink:
    In diesem Sinne möchte ich nur noch das fertige Script veröffentlichen und eine Frage stellen.

    Denkt ihr das mich das Script vor Spambots schützen kann?
    index.php

    [code]<?php
    // Hier wird eine Session gestartet um die zufälligen
    // Zahlen zwischen zu Speichern.
    session_start();
    // Wenn die Seite neu geladen wird, werden die gespeicherten
    // zufälligen Zahlen gelöscht
    unset( $_SESSION[‚ZufallString1‘] );
    unset( $_SESSION[‚ZufallString2‘] );
    unset( $_SESSION[‚ZufallString3‘] );
    unset( $_SESSION[‚ZufallString4‘] );
    // ----------Zufallszahlen generieren--------------
    // $AlphaNumerischerString = „1234567890“; enthält die Zahlen,
    // die generiert werden dürfen
    // $ZufallString1,2,3,4 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );
    // generiert die Zahlen und setzt sie in einer Variable ab ($ZufallString1,2,3,4)
    $AlphaNumerischerString = „1234567890“;
    $ZufallString1 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );
    $ZufallString2 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );
    $ZufallString3 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );
    $ZufallString4 = substr( str_shuffle( $AlphaNumerischerString ), 0, 1 );
    // Hier werden die Variablen in der Session gespeichert
    $_SESSION[‚ZufallString1‘] = $ZufallString1;
    $_SESSION[‚ZufallString2‘] = $ZufallString2;
    $_SESSION[‚ZufallString3‘] = $ZufallString3;
    $_SESSION[‚ZufallString4‘] = $ZufallString4;
    // Ende des PHP-Scripts und Beginn des Formulares
    ?>

     
    Name:
    Email:
    Betreff:
    Wieviel ist <?php echo($ZufallString1)?> mal <?php echo($ZufallString2)?> plus <?php echo($ZufallString3)?> minus <?php echo($ZufallString4)?>:
    Text:
    Option:
    [/code] send.php [code]<?php // Hier wird die Session (vom Formular) wieder gestartet! session_start(); // Nun müssen wir die Zufallszahlen wieder laden, um die // Aufgabe in diesem Script zu lösen und zu Prüfen ob der // User richtig gerechnet hat. $ZufallString1 = $_SESSION['ZufallString1']; $ZufallString2 = $_SESSION['ZufallString2']; $ZufallString3 = $_SESSION['ZufallString3']; $ZufallString4 = $_SESSION['ZufallString4']; // Hier wird das Ergebnis ausgerechnet $Ergebnis = $ZufallString1 * $ZufallString2 + $ZufallString3 - $ZufallString4; // Hier müssen wir unsere Email eintragen $ihremail = "-------------------------------"; // Lege nun eine leere Variable für Fehler an (wird später benötigt) $error = ""; // Inhalt aus den Formularen übertragen "Name" $name = $_POST['name']; // Inhalt aus den Formularen übertragen "Email" $email = $_POST['email']; // Inhalt aus den Formularen übertragen "Betreff" $betreff = $_POST['betreff']; // Inhalt aus den Formularen übertragen "Nachricht" $text = $_POST['text']; // Inhalt aus den Formularen übertragen "Aufgabe" $aufgabe = $_POST['aufgabe']; // das errechnete Ergebnis des Users // Sende Button $Submit = $_POST['Submit']; // Wir bauen eine Funktion die soll die Absender E-Mail überprüfen, ob die gültig ist // das machen wir mit eregi() wir prüfen nicht nur ob "@" und "." vorhanden ist sondern auch // 2 bustaben vor "@" und nach dem "@" da sind. function mailcheck($mail) {$mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9]) +@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail); return $mail;} // Wenn die Email korrekt war, geben wir sie mit return wieder zurück! //#################################################################################### // Jetzt prüfen wir ob die Felder ausgefüllt wurden mit if(empty) //wenn das feld "Name" nicht ausgefüllt wurde geben wir der leeren $error Inhalt // Also die Ausgabe "Sie haben keinen Namen angegeben." if(empty($name)) $error .= "
  • Sie haben keinen Namen angegeben.
  • "; // das gleiche mit "Email" if(empty($email)) $error .= "
  • Sie haben keine E-Mail angegeben.
  • "; // hier setzen wir unsere oben gebaute Funktion ein wenn E-Mail nicht stimmt dann fehlerausgabe if(mailcheck($email)) $error .= "
  • Ihre E-Mail ist ungültig
  • "; // für das Feld "Betreff" if(empty($betreff)) $error .= "
  • Es wurde kein Betreff ausgewählt.
  • "; // für Nachricht if(empty($text)) $error .= "
  • Sie haben kein Text angegeben.
  • "; // Jetzt wird überprüft ob der User überhaupt gerechnet hat! if(empty($aufgabe)) {$error .= "
  • Wenn du keine Lust hast zu rechnen, dann hab ich kein Bock die Mail zu senden!
  • ";} // Jetzt wird überprüft ob der User richtig gerechnet hat! else {if($aufgabe != $Ergebnis) $error .= "
  • Du hast die Aufgabe falsch gelöst! Das wäre die Lösung gewesen: $Ergebnis
  • "; // Wenn der User falsch gerechnet hat, werden die Zufälligen zahlen aus der Session gelöscht! unset( $_SESSION['ZufallString1'] ); unset( $_SESSION['ZufallString2'] ); unset( $_SESSION['ZufallString3'] ); unset( $_SESSION['ZufallString4'] );} // if(empty($error)) d.h wenn $error leer ist also alles normal ausgefüllt wurde und der Button "Absenden" angeklickt wurde // Dann springt das runter und wir holen uns die übertragene Daten if(empty($error) && $Submit == "Absenden" ) { // Wenn der Error leer ist wird überprüft, ob der User richtig gerechnet hat! if ($aufgabe == $Ergebnis){ // wir machen das ganze in eine Variable "$nachricht" $nachricht = "Email von ".$name."/n". "Name: ".$name."/n". "Email: ".$email."/n". "Betreff: ".$betreff."/n". "Nachricht: ".$text; // Hier wird der Betreff für die Email gesetzt $subject = "$betreff"; // Hier wird die Fertige Nachricht erzeugt! $nachricht1 = $email . "/nn" . $nachricht; // Jetzt setzen wir unsere Emailfunktion ein mail($ihremail,$subject,$nachricht1,"FROM: $email"); // hier fragen wir wieder ein Error ein: if(empty($error)) { // Wenn der Error leer ist wird dem User noch einmal gesagt was er geschrieben hat echo "Nachricht wurde erfolgtreich verschickt
    • Name: $name
    • Email: $email
    • Betreff: $betreff
    • Nachricht: $text
    "; // Und zusätzlich die Zufallszahlen gelöscht unset( $_SESSION['ZufallString1'] ); unset( $_SESSION['ZufallString2'] ); unset( $_SESSION['ZufallString3'] ); unset( $_SESSION['ZufallString4'] );}}} // Wenn es nicht stimmt, bekommt der User eine Nachricht das die Mail nicht gesendet werden konnte // und die Zufallszahlen werden auch wieder gelöscht else { echo "Folgender Fehler ist aufgetreten

    Ihre Nachricht konnte nicht gesendet werden:

      $error
    "; unset( $_SESSION['ZufallString1'] ); unset( $_SESSION['ZufallString2'] ); unset( $_SESSION['ZufallString3'] ); unset( $_SESSION['ZufallString4'] ); } // Ende des PHP Scripts ?>[/code]

    Ich verabschiede mich nun von euch und vielen Dank! :wink2: