[gelöst]Drupal_goto Befehl mit mehreren Variablen bzw. Parametern / Using drupal_goto with variables / query
am 30.09.2009 - 17:41 Uhr in
Hallo zusammen,
mit dem Drupal Befehl drupal_goto
http://api.drupal.org/api/function/drupal_goto
kann man einen User auf eine bestimmte Seite senden, also einen Redirect durchführen.
Ich habe Drupal (v6.14) in Kombination mit dem Xampp-Server (v 1.71) installiert. Alles hat funktioniert, bis auf den folgenden Fehler, der allerdings nur unter Xampp und nicht bei der gehosteten Seite im Internet auftritt.
http://www.apachefriends.org/f/viewtopic.php?f=4&t=37392
Erst dachte ich, dass das Problem durch eine fehlerhafte Konfiguration des Apache Servers (Xampp) auftrat,
http://drupal.org/node/43545
doch dem scheint nicht so zu sein.
Stattdessen scheint es, daß der Fehler in einer falschen Verwendung des drupal_goto Befehls zu suchen ist.
Bisher habe ich den Redirect folgendermaßen durchgeführt:
Beispiel: file link.php
drupal_goto($path = 'link.php?a=1&b=3');
Resultat im Addressfeld des Browsers:
link.php%3Fa%3D1%2526b%3D3
Fehler:
403 - Access Denied
Fehlerbeschreibung in der error.log Datei (xampp\apache\logs):
The given path contained wildcard characters: access to /link.php?a=1%26b=3 failed, referer: xxxxxxxxxxx
Behebung des Problems: Die richtige Verwendung des drupal_goto Befehls:
drupal_goto($path = 'link.php', $query = 'a=1&b=3');
oder, falls man Variable verwendet:
drupal_goto($path = 'link.php', $query = 'a=' . $a . '&b=' . $b);
So sollte das Problem mit den Access Denied Fehlern der Vergangenheit angehören.
Für mich wäre noch interessant zu wissen,
1) wie ich als Drupal Beginner aus der Anleitung zur Benutzung des Befehls unter http://api.drupal.org/api/function/drupal_goto schlau werden soll:
drupal_goto($path = '', $query = NULL, $fragment = NULL, $http_response_code = 302)
2) warum man nicht einfach ein paar einfache Beispiele dieser Beschreibung zufügt?
3) warum meine ursprüngliche Verwendung des Befehls à la " drupal_goto($path = 'link.php?a=1&b=3'); " nur unter Xampp und nicht auf der Internet Seite einen Fehler produziert?
Aber wahrscheinlich bin ich der einzige der zur erfolgreichen Verwendung des Befehls zu blöde ist.
Wer aber trotzdem ein wenig Licht in die Beantwortung von Frage 1 bringen kann, den bitte ich hiermit herzlichst, dies zu tun. Wir alle wollen ja etwas dazulernen. Hierfür herzlichen Dank und Gruß,
Nick Dilis
- Anmelden oder Registrieren um Kommentare zu schreiben
Query kann ein Sring sein,
am 30.09.2009 - 21:29 Uhr
Query kann ein String sein, der schon richtig codiert ist oder besser ein Array.
Also:
<?php
drupal_goto($path = 'link.php', array('query' => array('a' => $a, 'b' => $b)));
?>
Siehe http://api.drupal.org/api/function/url/6
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
ich mag mich irren, aber
am 01.10.2009 - 09:10 Uhr
ich mag mich irren, aber folgendes sieht mir nach nem Fehler aus:
Beispiel: file link.php
drupal_goto($path = 'link.php?a=1&b=3');
is der Drupal API steht
$path A Drupal path or a full URL.
und $path scheint mir hier weder ein Drupal-Pfad noch eine vollständige URL zu sein. Ich vermute das es mit $path = 'http://deine-domain.de/link.php?a=1&b=3' geklappt hätte.
Ungetestet, wie gesagt, is nur en Vermutung
kleiner Fehler
am 01.10.2009 - 12:55 Uhr
Hallo Herr Bähr,
danke für Ihren Hinweis.
Ich glaube in Ihrem Beispiel ist im Array ein kleiner Fehler enthalten:
Folgendes Beispiel wurde von mir erfolgreich getestet
<?php
drupal_goto($path = 'link.php', $query = array('a' => $a, 'b' => $b));
?>
Gruß,
Nick Dilis
ja stimmt, einfach das
am 01.10.2009 - 13:34 Uhr
ja stimmt, einfach das Array
<?php
drupal_goto($path = 'link.php', array('a' => $a, 'b' => $b));
?>
----------------------------------------
http://tobiasbaehr.de/
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Du hattest Recht...
am 01.10.2009 - 13:49 Uhr
Hallo stebeg,
Du hattest Recht mit Deiner Vermutung. Ich habe jetzt mal diverse drupal_goto Befehle auf dem Xampp / Apache Server getestet und kommentiert, ob diese Methoden funktionieren oder nicht.
Gruß,
Nick Dilis
Anfangs gleich die beste Lösung:
//Given Values: works (maybe the best solution)
drupal_goto($path = 'link.php', $query = array('a' => 1, 'b' => 3));
//also possible: drupal_goto($path = 'link.php', $query = array(a => 1, b => 3));
//Variables: works (maybe the best solution)
drupal_goto($path = 'link.php', $query = array('a' => $a, 'b' => $b));
//also possible: drupal_goto($path = 'link.php', $query = array(a => $a, b => $b));
Weitere Möglichkeiten:
//Given Values: works -> full path!
drupal_goto($path = 'http://localhost/(Verzeichnis)/link.php?a=1&b=3');
//Variables: works -> full path!
drupal_goto($path = 'http://localhost/(Verzeichnis)/link.php?a=' . $a . '&b=' . $b);
//Given Values: works
drupal_goto($path = 'link.php', $query = 'a=1&b=3');
//Variables: works
drupal_goto($path = 'link.php', $query = 'a=' . $a . '&b=' . $b);
//Variables: works
$_REQUEST['destination'] = 'link.php?a=' . $a . '&b=' . $b;
drupal_goto();
//Given Values: works
$_REQUEST['destination'] = 'link.php?a=1&b=3';
drupal_goto();
Nicht funktionierende Möglichkeiten:
//Given Values: does not work in Xampp/Apache -> not the full path! => Error: Access denied;
//did work on the hosted (productive) environment
drupal_goto($path = 'link.php?a=1&b=3');
//Variables: does not work -> not the full path! => Error: Access denied in Xampp / Apache
//did work on the hosted (productive) environment
drupal_goto($path = 'link.php?a=' . $a . '&b=' . $b);