referer

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • referer

    Hallo Allerseits
    Heute muss ich mich mal an euch wenden.
    Ich habe auf einer meiner Webseiten Probleme mit Sonderzeichem im Referer
    Beispiel:
    http://www.google.de/search?sourceid=navclient&ie=UTF-8&rls=GGLD,GGLD:2004-29,GGLD:en&q=m%C3%BCnzen

    mich interessiert im wesendlichen die url welche ok ist
    jedoch der suchbegriff parameter q sollte eigendlich münzen heissen

    kann mir jemand helfen wie ich das problem in den griff bekomme

    system: linux red hat enterprice 3
    Apache Server 2.0
    php 4.1.10

    die funktion mit der ich den refere lese:

    function my_Search($referer) {

    $rsearch[] = array('altavista', 'q', 'Altavista.com');
    $rsearch[] = array('google', 'q', 'Google');
    $rsearch[] = array('abacho', 'q', 'Abacho');
    $rsearch[] = array('bestoftheweb', 'q', 'Best Of The Web');
    $rsearch[] = array('bluewin', 'q', 'Bluewin');
    $rsearch[] = array('fireball', 'query', 'Fireball');
    $rsearch[] = array('msn', 'q', 'MSN');
    $rsearch[] = array('search', 'q', 'Search');
    $rsearch[] = array('infoseek', 'qt', 'InfoSeek');
    $rsearch[] = array('acoon', 'begriff', 'Acoon');
    $rsearch[] = array('alltheweb', 'query', 'All The Web');
    $rsearch[] = array('evision', 'query', 'Evision');
    $rsearch[] = array('aol', 'query', 'AOL');
    $rsearch[] = array('freenet', 'query', 'FreeNet');
    $rsearch[] = array('lycos', 'query', 'Lycos');
    $rsearch[] = array('mamma', 'query', 'Mamma');
    $rsearch[] = array('big-search', 'search', 'Big Search');
    $rsearch[] = array('cypria', 'search', 'Cypria');
    $rsearch[] = array('excite', 'search', 'Excite');
    $rsearch[] = array('ask', 'ask', 'Ask');
    $rsearch[] = array('netscape', 'search', 'Netscape');
    $rsearch[] = array('metaspinner', 'qry', 'MetSpinner');
    $rsearch[] = array('nbci', 'keyword', 'Nbci');
    $rsearch[] = array('web', 'su', 'North Ernlight');
    $rsearch[] = array('yahoo', 'p', 'Yahoo');
    $rsearch[] = array('netsprint', 'qt', 'netsprint');
    $rsearch[] = array('brisbane.t-online.de', 'q', 'T-Online');
    $rsearch[] = array('web', 'mc', 'Web.de');



    /////////////////////////////
    $search = '';
    $url = parse_url($referer);
    parse_str($url['query']);


    $file = count($rsearch);


    for($n=0; $n<$file; $n++) {

    if(eregi($rsearch[$n][0], $referer) && isset($$rsearch[$n][1])) {
    $search = $rsearch[$n][2];
    break;
    }

    }

    if(!empty($search)) {
    $rsearchq = $$rsearch[$n][1];
    $rsearchq = strtolower($rsearchq);
    $sign = array('%22', '%23', '%24', '%25', '%26', '%27', '%2a', '%2b', '%2c', '%5c');

    while(list($keysign, $valuesign) = each($sign))

    $rsearchq = str_replace($valuesign, '', $rsearchq);
    $quest = str_replace('+', ' ', $rsearchq);
    $quest = stripslashes($rsearchq);
    $rsearchq = rawurldecode($rsearchq);
    $ret[1] = strtolower($rsearchq);
    $ret[0] = $search;
    }


    return $ret;

  • #2
    der parameter "ie=UTF-8" gibt an, wie der string kodiert ist. hier zB. utf8. einfach mit utf8_decode() umwandeln und gut ist.
    Kissolino.com

    Kommentar


    • #3
      Danke für die schnelle Hilfe
      kleines Problem noch:
      Die Sonderzeichen sind weg jedoch steht jetzt für den Umlaut ein Fragezeichen

      m?nzen

      Habe leider kein zugriff auf die Spracheinstellungen des Servers
      wenn da der fehler sitzen sollte

      Kommentar


      • #4
        urldecode und utf8_decode sind geschickt kombiniert ganz schön tolle funktionen
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Sorry
          erst mal danke

          aber ich bekomme es nicht hin

          ich bekomme immer neue zeichen im wort aber nicht münzen
          sondern m?zen oder m[]zen

          gibt es nicht irgendwelche umsetzungstabellen die die zeichen in der url in umlaute umsetzt dann könnte ich mir schon etwas bauen

          ich habe probiert

          utf8_decode(urldecode($value)) und umgekert

          Kommentar


          • #6
            irgendwas machst du falsch ...
            PHP-Code:
            echo utf8_decode(urldecode('m%C3%BCnzen')); 
            ... ergibt bei mir "münzen"
            Kissolino.com

            Kommentar


            • #7
              Danke noch mal

              Du hattes recht der Fehler liegt wo anders

              wenn du meine funktion anschaust

              Ausschnitt:

              if(!empty($search)) {
              $rsearchq = $$rsearch[$n][1];
              $rsearchq = strtolower($rsearchq);
              $sign = array('%22', '%23', '%24', '%25', '%26', '%27', '%2a', '%2b', '%2c', '%5c');

              while(list($keysign, $valuesign) = each($sign))

              $rsearchq = str_replace($valuesign, '', $rsearchq);
              $quest = str_replace('+', ' ', $rsearchq);
              $quest = stripslashes($rsearchq);
              $rsearchq = rawurldecode($rsearchq);
              $ret[1] = strtolower($rsearchq);
              $ret[0] = $search;
              }

              und die Funktion strtolower() entfernst dann kömmt der string so rüber wie er sollte auch ohne utf-8 parsen

              warum weis ich nicht


              Trotzdem vielen Dank Ihr habt mir schon weiter geholfen by STS

              Kommentar

              Lädt...
              X