Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Parameterübergabe mit require()? Antworten
Parameterübergabe mit require()?

accelle
Pixelschubser


Beiträge: 6


Hallo zusammen,

ich bin PHP Newbie und hab folgendes Prob:

Ich hab gerade eine Website erstellt, mit der man meine Seite weiterempfehlen kann. In einem Formular gibt man Empfängermailadresse und eine Nachricht ein. Zudem seine eigene Mailadresse und (wer will) seinen Namen.

Diese Website ruft ein PHP-Script auf, das aus dem Formular eine mail zusammenbaut. Das funktioniert. Nun möchte ich die erste Seite wieder aufrufen und dabei die Mailadresse und den Namen des Empfehlers einblenen. Vielleicht möchte er meine Seite ja noch anderweitig empfehlen.

Ich versuchte also mit
1:
require("tell_a_friend.php?ml=".$mailadresse);

meine Website wieder aufzurufen. Fehlermeldung:
Fatal error: main() [function.require]: Failed opening required 'tell_a_friend.php?ml=name@domain.de' (include_path='.:/usr/local/lib/php') in ...


Kann man mit require keine Parameter übergeben? Ohne die Mailadresse tuts nämlich.

Wenn nein: wie geht es dann?

Bin dankbar für jeden Tipp.

Danke im Voraus
Peter

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


nein nicht an das require dranhängen.

versuchs mal mit
$_GET oder $_SERVER


---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

accelle
Pixelschubser


Beiträge: 6


Hallo raiserle,

danke für Deinen Tipp. Es geht sogar ohne GET. Man kann die Variablen aus dem aufrufenden Programm mitbenutzen.

Gruß
Peter

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


vorsicht
register_globals off
dann wirds mit der variablen nicht mehr gehen

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

accelle
Pixelschubser


Beiträge: 6


Danke für den Hinweis. Kann ich den Wert von register_globals beeinflussen oder wird der von meinem Provider festgelegt?

Ich werde auf jeden Fall noch das mit $_GET und $_SERVER probieren.

Gruß
Peter

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


ja es wird vom provider gesetzt
und in wie fern es mit ini_set() zu verändern ist, habe ich noch nie probiert.
ini_list

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

progrookie
Fachidiot


Beiträge: 120


wenn dein Provider dir einen .htaccess erlaubt, müßte folgendes drinstehen:
1:
php_flag register_globals on


Und über ini_set müßte es wie folgt gehen:
1:
ini_set("register_globals", "1"); 

Achte aber darauf, dass diese Einstellung nur dann gesetzt werden kann, wenn vorher kein HTML-Code erzeugt wurde, durch "echo", "print_r" u.s.w.!!!

---

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


nur ne frage dazu,
kann es nicht aber auch sein, das der provider es unterbindet,
über ini_set() verschiedene parameter zu verändern. das selbe gilt natürlich auch für
.htaccess

will damit nur sagen
$_GET['var'] oder $_POST['var'] ist doch eh sauberer
als einfach $var zu benutzen

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

progrookie
Fachidiot


Beiträge: 120


will damit nur sagen
$_GET['var'] oder $_POST['var'] ist doch eh sauberer
als einfach $var zu benutzen

...da stimme ich Dir zu 100% zu!!! Ich gehöre auch zu der Gruppe, die direkt entweder über die $_GET, $_POST usw gehen, ist für die spätere Quellcode- und Fehleranalyse eh besser!!!

---

  Profil   E-Mail   Website   Editieren   Zitieren

accelle
Pixelschubser


Beiträge: 6


Hallo zusammen.

Bin überrascht über die tolle Resonanz hier. Hab jetzt auch Zeit gefunden, den Zugriff mit $_GET und $_POST zu testen. Leider kann ich damit nicht auf die Variable aus dem aufrufenden Programm zugreifen.

Muss ich die irgendwie übergeben, damit ich per $_GET oder $_POST zugreifen kann?

Gruß
Peter

  Profil   Editieren   Zitieren

languitar
Foren-Team


Beiträge: 2795


Ein require ist Grunde nichts anderes als eine textliche Einsetzung. Also die require-Zeile wird einfach direkt gegen den Code ausgetauscht, der in der einzubindenden Datei steht. Was das umfassende Skript nicht unterstützt, kann dann in der eingebundenen Datei natürlich auch nicht benutzt werden.

---
Take a look here!
Lichtblick - Einblick - Ausblick

  Profil   E-Mail   Website   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


um es vielleicht mit einfacheren worten zu sagen, oder auch nich...
oder ausführlicher

wenn du in deinem script (a) eine variable definiert
und in deinem script (a) das script (b) aufrufst,
stehen dort die selben variablen zur ferügung wie in script (a)

so wie schon languitar sagte
du musst dir vorstellen, wenn du nen require, oder include machst,
wird der code aus dem script, an die stelle, wo du ihn aufrufst, eingefügt...
also wie reincopiert


was natürlich trotzdem zu dem schluss kommen läst, was du versucht hast?
an das script, was du aufrufst, eine get variable anzuhängen... geht ja nicht

um das nun klarzustellen. wenn du in deinem script (a) eine variable hast.. angenommen
$test
und das script (b) im script (a) aufrufst.
dann wirst du über die supergobals $_GET $_POST $_SERVER,
sie nicht wiederfinden. ausnahme $GLOBALS.
warum, weil sie über keine der metoden übergeben wurde. sie wurde einfach in dem script definiert und ihr einen wert zugewiesen.
und deswegen, wie schon oben beschieben..., da die variable $test ja in (a) steht, steht dir auch die variable $test in (b) zur verfügung

ich hoffe, das war ein verständlicher abschluss, um nochmal alles zusammen zu fassen.

gruß raiserle

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

accelle
Pixelschubser


Beiträge: 6


Hallo zusammen,

das habe ich jetzt verstanden. Wenn das aber so ist, dass require einfach den Text der aufgerufenen Datei in die ursprungsdatei einsetzt und deshalb alle dort definierten Variablen automatisch auch in der aufgerufenen gelten, dann verstehe ich nicht, warum Ihr mir empfohlen habt, $_GET oder $_POST zu nehmen.

Dass ich direkt zugreifen kann, habe ich schon getestet, ich dachte, aus Transparenzgründen wäre es besser das nicht zu tun.

Bin confused.

Gruß
Peter

  Profil   Editieren   Zitieren

raiserle
Fachidiot


Beiträge: 144


ja, ich hatte dort oben den beitrag falsch verstanden.
ich dachte du wolltest eine variable die aus einem link resultiert an den riequire hängen.
deswegen die erklärung von $_get / $_post / $_server / $globals.

---
Irren is Menschlich

Wer andern eine Grube gräbt,
sollte darüber nachdenken,
ob sie tief genug ist!!!!

Kameradschaft ist, wenn der
Kamerad schafft !!!!

  Profil   E-Mail   Website   Editieren   Zitieren

accelle
Pixelschubser


Beiträge: 6


OK, alles klar. Dann Danke für die Erläuterungen. Ich versteh auf jeden Fall jetzt einige Zusammenhänge besser als vorher.

Gruß und schönes WE
Peter

  Profil   Editieren   Zitieren
 

Antworten
Nach oben