Ankündigung

Einklappen
Keine Ankündigung bisher.

parse_str: undefined index

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • parse_str: undefined index

    Hallo zusammen,

    steh ziemlich im Regen: Ich habe eine Software gekauft, deren Suchfunktion auf einem Server bei Hosteurope einfach nicht funktionieren will. Ich bekomme einfach immer ein leeres Ergebnis zurück. In meiner lokalen Testumgebung funktioniert alles einwandfrei.

    Hosteurope sagt, es wäre ein Fehler im Skript. Der Hersteller besteht auf zu restriktive Einstellungen beim Hoster. Heißt: Kein Support von beiden Seiten

    Toll! Also bin ich seit 3 Wochen dran, Parameter des Hosters auszuschließen und das Skript zu debuggen.

    Benutze
    error_reporting(E_ALL|E_STRICT);
    ini_set('display_errors','On');
    Erhalte folgende Fehlermeldung:
    Notice: Undefined index: query in /Pfad/SearchProfile.action.php on line 52
    {exec: new Function("window.location.href = \"http:\\\/\\\/mysite.com\\\/profile_list.php?username=jackjones&new_search=1&s earch_type=username\";\n"), data: null}
    Hier ein Teil des Codes, ganz poste ich den lieber nicht, wg. Urheberrecht.

    PHP-Code:
    public function process( array $post_dataFormResponse $responseForm $form )
        {
            
    $service = new Service('search');
            if (
    $service->checkPermissions() != Service::SERVICE_FULL ) {
                
    $response->addError($service->permission_message['message']);
                return 
    false;
            }
            
            
    $service->trackServiceUse();
        
        
    $data = array();
            foreach (
    $post_data as $key=>$item)
            {
                if (!empty(
    $post_data[$key])) {
                    
    $data[$key] = $post_data[$key];
                }
            }
            
            
    $data['new_search'] = 1;
            
    $data['search_type'] = $form->getSearchType();
        
            
    $url_info parse_url($_SERVER["HTTP_REFERER"]);

            
    parse_str($url_info['query'], $query);  //Zeile 52
                
            
    if (isset($query['search_list']) && intval($query['search_list'])) {
                
    app_SearchCriterion::updateCriterion(intval($query['search_list']), $data);
            }
            
            
    $url Navigation::href('profile_list',$data);
            
            
    $response->redirect($url);
                
        } 
    Klarer Fall: 'query' ist nicht definiert.
    Problem: Wie kann ich das machen?


    Andere Arrays (hoffe, das die so heißen) wie 'new_search' und 'search_type' werden aus anderen php-scripten gezogen. 'query' taucht aber nirgends auf..

    Habe versucht die Zeile einfach doof umzustellen, wie es in der Dokumentation zu parse_str steht:
    PHP-Code:
    ]$query= array();
    parse_str($url_info$query); 
    Nun die Fehlermeldung
    Notice: Array to string conversion in...
    Hab dann auch noch versucht die Definition von $querry= array() wegzulassen. gleicher Fehler.

    Bin einfach zu blöde! Der Hersteller will mir auch nicht sagen, wo das Skript 'query' herbekommen sollte...

    Weiß hier jemand, wie ich 'query' richtig definieren kann, damit die Zeile 52 abläuft?

    Vielen Dank im Voraus!

  • #2
    Der Eintrag query sollte ja auch aus parse_url kommen: http://php.net/parse_url

    In $_SERVER["HTTP_REFERER"] scheint also nichts hinter dem '?' zu kommen. Das Skript ist an der Stelle nicht sauber programmiert (schöne Grüße an den, der dafür Geld nimmt), weil nicht auf die Existens von $url_info['query'] geprüft wird.

    Die Meldung könnte man weg bekommen, indem das error_reporting entsprechend angepasst wird (E_ALL ^ E_NOTICE). Ob deine Suche dann funktioniert bleibt offen.

    Kommentar


    • #3
      Hey, danke für die super schnelle Antwort.

      Jetzt wird einiges klarer. Hab noch 2 Fragen dazu:

      1. Weißt Du, woher das Skript die URL-Info in der Fehlermeldung nimmt?
      Notice: Undefined index: query in /Pfad/SearchProfile.action.php on line 52
      {exec: new Function("window.location.href = \"http:\\\/\\\/mysite.com\\\/profile_list.php?username=jackjones&new_search=1&s earch_type=username\";\n"), data: null}

      2. Kann ich die vielleicht irgendwie in 'query' übertragen?

      3. Kann es sein, dass es Server-Restriktionen gibt, die die Ausgabe von parse_url unterdrücken?

      Suche läuft übrigens nicht, wenn ich das Error-Reporting raus nehme..

      Das sind echt Abzocker! Sagen einfach, dass es bei anderen Kunden läuft.

      Kommentar


      • #4
        Zitat von noxxilein Beitrag anzeigen
        3. Kann es sein, dass es Server-Restriktionen gibt, die die Ausgabe von parse_url unterdrücken?
        Nein, aber der Übeltäter ist eher $_SERVER["HTTP_REFERER"]. Vergleiche mal den Inhalt der Variable von Testserver und Hoster.

        Kommentar


        • #5
          dumm nur, dass http_referer vom Browser abhängig ist, wenn ich mich nicht irre - kann man also quasi deine ganze Suche mit lahmlegen

          Kommentar


          • #6
            PHP-Code:
            var_dump ($_SERVER["HTTP_REFERER"]); 
            string(46) "http://mysite.com/member/search.php"
            Also wie dennis81 sagt, keine Infos hinter dem "?".

            Jetzt raff ich aber gar nix mehr: ist auf dem Testserver auch so.

            Hab die 1:1 gleich aufgesetzt, also Testserver und beim Host. Kann es denn wirklich sein, dass ein Server strikter mit solchen unsauberen Programmierungen umgeht?

            Und woher bekommt das Skript diese Info, da stehen alle Suchparameter drin:
            {exec: new Function("window.location.href = \"http:\\\/\\\/mysite.com\\\/member\\\/profile_list.php?username=jackjones&new_search=1&s earch_type=username\";\n"), data: null}
            (siehe oben)

            Kommentar


            • #7
              da stehen zwar alle Parameter drin - aber eben nicht ein query= ...

              aber frag doch mal den Entwickler welche Einstellungen sein Script GENAU braucht - dann kannst du damit konkret hosteurope nerven

              Kommentar


              • #8
                Kann das sein, dass ich mich grade total verzettel?!

                Durch das errror-reporting bleibt man an $url_info['query'] hängen. Ohne wird in der Adressleiste des Browsers folgendes generiert:
                http ://mysite.com/member/profile_list.php?username=hilden&new_search=1&sear ch_type=username
                In der Testversion wird der gesuchte Benutzer angezeigt, in der Version beim Provider gibt es diesen Benutzer angeblich nicht.


                aber frag doch mal den Entwickler welche Einstellungen sein Script GENAU braucht - dann kannst du damit konkret hosteurope nerven
                eagle275, hast Du ne Idee, ob es eine spezifische Einstellung gibt, die den HTTP_REFERER abblockt?

                Von Seiten des Herstellers muss das Tool offen sein wie "ein Scheunentor", Du hast ja schon darauf hingewiesen, dass der Einsatz von http_referer generell nicht empfehlenswert ist.

                Kommentar


                • #9
                  Ersetz mal Zeile 52 gegen das hier
                  PHP-Code:
                  parse_str$_SERVER['QUERY_STRING'] ); 
                  und schau mal ob er da was mit anfangen kann...

                  Kommentar


                  • #10
                    Zitat von noxxilein Beitrag anzeigen
                    Durch das errror-reporting bleibt man an $url_info['query'] hängen. Ohne wird in der Adressleiste des Browsers folgendes generiert:
                    Normalerweise erhälst du bei einer Weiterleitung noch den berühmten "header already sent"-Fehler. Sieht hier aber so aus, dass die Weiterleitung per JAvaScript veranlast wird ("exec: new Function...").
                    Ok, alkso ohne error_reporting funktioniert schonmal die Weiterleitung.

                    Zitat von noxxilein Beitrag anzeigen
                    In der Testversion wird der gesuchte Benutzer angezeigt, in der Version beim Provider gibt es diesen Benutzer angeblich nicht.
                    Tja, das hat dann wohl nichts mit obigem zu tun und kann alles Mögliche als Ursache haben.
                    Du könntest mal mit phpinfo(); die Serverkonfigurationen vergleichen oder in der profile_list.php nach dem Rechten sehen.

                    Kommentar


                    • #11
                      nicht zu vergessen, dass der User natürlich tatsächlich in der Datenbank gar nicht vorhanden ist, sondern nur auf der im Testsystem...

                      Kommentar


                      • #12
                        Bitte beachten: http://www.php.de/php-einsteiger/ann..._Multipostings

                        http://phpforum.de/forum/showthread.php?t=266716

                        *close*

                        Kommentar

                        Lädt...
                        X