Nelson: Was stimmt hier nicht?

http://www.coder-wiki.de/HowTos/PHP-Keyword-aus-Referer-auslesen

Parse error: parse error, unexpected T_VARIABLE in ...blabla\referer.php on line 2

Soweit ich es verstanden habe, sollte diese Fehlermeldung auf ein fehlendes Semikolon hinweisen oder?
Leider sehe ich aber die Fehlerstelle nicht im obigen Code...
Vielen Dank im Vorraus
Nelson

  1. Hello out there!

    Leider sehe ich aber die Fehlerstelle nicht im obigen Code...

    Wir ohne Code auch nicht.

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hello out there!

      Leider sehe ich aber die Fehlerstelle nicht im obigen Code...

      Wir ohne Code auch nicht.

      See ya up the road,
      Gunnar

      Ok dachte der Link wird beachtet :)

      <?
      function referer2keyword($referer=$_SERVER['HTTP_REFERER'])
      {

      $domain = explode('/', $referer);
              $array = array(
                              array('google','q'),
                              array('alltheweb','query'),
                              array('altavista','q'),
                              array('aol','query'),
                              array('excite','search'),
                              array('hotbot','query'),
                              array('lycos','query'),
                              array('yahoo','p'),
                              array('t-online','q'),
                              array('msn','q'),
                              array('netscape','search')
              );

      for($i=0; $i<count($array); $i++) {

      if(eregi($array[$i][0], $referer)) {
                              $parse = parse_url($referer);
                              parse_str($parse['query'], $output);
                              $keyword = $output[$array[$i][1]];
                              break;
                      }

      }

      return $keyword;
      }

      echo referer2keyword();
      ?>

      1. Moin,

        Ok dachte der Link wird beachtet :)

        der Link war ja nicht wirklich ein Link. Mehr in der Forums-Hilfe.

        Ich glaub, der Fehler kommt durch diese Zeile zustande:

        function referer2keyword($referer=$_SERVER['HTTP_REFERER'])

        Ein = in der Parameterdeklaration benutzt man, wenn man den Parameter mit einem Wert vorbelegen will, falls kein Parameter übergeben wurde.
        Diesen aber mit einer Variablen vorzubelegen, scheint PHP nicht zu gefallen. Macht eigentlich auch nicht wirklich Sinn...
        Es müsste also so lauten:
         function referer2keyword($referer)

        MfG,
          Juan

        1. Hallo Juan,

          Es müsste also so lauten:
          function referer2keyword($referer)

          Damit ist der Parameter der Funktion aber nicht mehr optional.

          Grüße aus Nürnberg
          Tobias

          1. Hi,

            Es müsste also so lauten:
            function referer2keyword($referer)
            Damit ist der Parameter der Funktion aber nicht mehr optional.

            stimmt, es müsste so lauten:
            function referer2keyword($referer = '')
            und dann in der Funktion, wie bereits von anderen Teilnehmern erklärt:
            if (empty($referer)){
             $referer = $_SERVER['HTTP_REFERER']
            }

            MfG,
              Juan

            1. Vielen Dank an alle!

      2. Hello,

        Leider sehe ich aber die Fehlerstelle nicht im obigen Code...

        Du solltest unbedingt alle Fehlermeldungen einschalten zum Entwickeln.
        Schreib an den Anfang Deines Scriptes (während der Entwicklung!)

        <?php

        error_reporting(E_ALL);
           ini_set('display_errors','1');

        Und dann versuch es nochmal.

        MMn ist $_SERVER['HTTP_REFERER'] nur gesetzt, wenn vom Client ein Referrer mitgeliefert wurde.
                                  ---                                        ----

        PHP mit einem 'r', HTTP mit zwei 'r', oder wie war das? *gg*

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

  2. function referer2keyword($referer=$_SERVER['HTTP_REFERER'])

    da liegt der fehler.
    so könnte es gehen:

    function referer2keyword()
    {
    $referer=$_SERVER['HTTP_REFERER'])
    .....
    }

  3. Hallo Nelson,

    http://www.coder-wiki.de/HowTos/PHP-Keyword-aus-Referer-auslesen
    Parse error: parse error, unexpected T_VARIABLE in ...blabla\referer.php on line 2

    Man kann Parametern von Funktionen keine Variable als Standardwert zuweisen, du müsstest also die Zeile:
      function referer2keyword($referer=$_SERVER['HTTP_REFERER'])
    z.B. in
      function referer2keyword($referer='')
    umschreiben und am Anfang der Funktion prüfen ob die Variable $referer leer ist (->empty()) und wenn ja ihr den Wert von $_SERVER['HTTP_REFERER'] zuweisen.

    Grüße aus Nürnberg
    Tobias

    1. Hello,

      Man kann Parametern von Funktionen keine Variable als Standardwert zuweisen, du müsstest also die Zeile:
        function referer2keyword($referer=$_SERVER['HTTP_REFERER'])
      z.B. in

      function referer2keyword($referer='*')
        umschreiben und am Anfang der Funktion prüfen ob die Variable $referer genau den Stern enthält, der ja bekanntlich kein gültiger Referrer wäre.

      if ($referer == '*')
       {
         if isset($_SERVER['HTTP_REFERER'])
         {
           $referer = $_SERVER['HTTP_REFERER'];
         }
         else
         {
           $referer = '';
         }
       }

      ## hier $referer auf Schwachsinn und ggf. Injection prüfen

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

    2. hi,

      du müsstest also die Zeile [...] z.B. in
        function referer2keyword($referer='')
      umschreiben und am Anfang der Funktion prüfen ob die Variable $referer leer ist (->empty()) und wenn ja ihr den Wert von $_SERVER['HTTP_REFERER'] zuweisen.

      Da würde ich dann doch aber

      function referer2keyword($referer=false) {  
        if(!$referer) { $referer = ...; }
      

      den Vorzug geben.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Hello,

        Da würde ich dann doch aber
        function referer2keyword($referer=false)

        {
            if($referer === false)
            {
              $referer = REFERER_DEFAULT;
            }

        Zu beachten wäre immer noch, dass $_SERVER['HTTP_REFERER'] nur gesetzt ist, wenn der Client einen Referrer übertragen hat, unabhängig davon, ob dieser gefälscht ist.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

        1. echo $begrüßung;

          $referer = REFERER_DEFAULT;

          Das ist in dieser Funktion gar nicht notwendig. Ein einfaches Irgendwas, wie '', reicht aus. Es geht ja nur darum, die eventuell vorhandenen Suchbegriffe aus dem eventuell mitgesendeten oder übergebenen Referrer rauszuholen.

          Da die Quelle ja ein Wiki ist, habe ich mir mal erlaubt, sie zu korrigieren. Nur falls sich jemand wundert ...

          echo "$verabschiedung $name";

          1. Hello,

            Da die Quelle ja ein Wiki ist, habe ich mir mal erlaubt, sie zu korrigieren. Nur falls sich jemand wundert ...

            Das gefällt mir so.

            Man könnte nun im WIKI noch den Punkt "externe Links zur Evaluation dieses Vorschlags" einbauen und auf diesen Thread verweisen  :-))

            Harzliche Grüße vom Berg
            http://www.annerschbarrich.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau