+ Antworten
Ergebnis 1 bis 4 von 4

Thema: [PHP] Fehler 500 malformed header from script. Bad header

  1. #1
    spl
    spl ist offline
    TP-Insider spl macht alles soweit korrekt Avatar von spl
    Registriert seit
    Sep 2003
    Ort
    Sankt Augustin
    Beiträge
    639

    [PHP] Fehler 500 malformed header from script. Bad header

    allo zusammen,

    ich habe ein Script welches ist auf dem neusten XAMPP-Server geschrieben habe und jetzt auf einen Server bei D)F laden wollte. Aber es kommt immer ein Fehler 500. Der CGI-Debugger meldet folgendes:
    [Fri May 12 16:09:41 2006] [error] [client 80.136.245.108] malformed header from script. Bad header=Content-Type: /www/114720_53757/webseiten/xxx/xxx/server_address.php

    Jetzt aber von vorne: Es handelt sich um ein Ajax-Script, welches mit PHP auf eine Datenbank zugreift.

    Die Datei Index.php ist hier wohl uninteressant, weil Sie nur den fraglichen Teil included. Bis auf vielleicht diesen Teil:
    Code:
    <script language="javascript" type="text/javascript" src="libs/ajason/javascript/json.js"></script>
    <script language="javascript" type="text/javascript" src="libs/ajason/javascript/ajax.js"></script>
    <script language="javascript" type="text/javascript" src="libs/template.js"></script>
    <script language="javascript" type="text/javascript" src="libs/domex.js"></script>
    Included wird dann plusminus.php:

    PHP-Code:
    <script language="JavaScript">
        <!--
            <?php
                
                
    if ($_POST[name]=="S") { include ("common_addressspl.php"); } 
                elseif (
    $_POST[name]=="A") { include ("common_addressal.php"); } 
                else { die(
    "kein User"); }
                
    $objAjax createAjaxObject();
                
    // erstellen von Client-Informationen
                
    $objAjaxClient $objAjax->getClient();
                echo 
    $objAjaxClient->getJavaScript();
            
    ?>
        //-->
        
        
        function doLiveSearch()
        {
            ajax_searchAddress(document.getElementById("query").value, cb_liveSearch);
        }
        
        function cb_liveSearch(result)
        {
            var output = TrimPath.processDOMTemplate("result_jst", result);
            showResult(output);
        }
        
        var objTimer = null;
        function liveSearchStart()
        {
               //--- show progress message
            showResult ('<tr><td align="center" colspan="7"><img src="ico_searching.gif" alt="Daten werden geladen ...">Daten werden geladen...</td></tr>')

            if (objTimer) {
                window.clearTimeout(objTimer);
            }
            objTimer = window.setTimeout("doLiveSearch()", 500);
        }

        function showResult(htmlcode)
        {
            objDestinationTable = document.getElementById("search_result");
            replaceTableContent(objDestinationTable, htmlcode);
        }
        
        /**
        *   Hilfsfunktion, um einen Tabellenbody mit anderen Werten zu versehen. Diese
        *   Funktion ist notwendig, da innerHTML für TBODY Elemente für Internet Explorer
        *   nicht funktioniert
        */
        function replaceTableContent(objDestinationTable, htmlcode)
        {
            //--- find the table body!
            objDestinationBody = DOMEX_getElementByTagName(objDestinationTable, "TBODY");
            
            //--- ablöschen der Zieltabelle
            DOMEX_removeChildNodes(objDestinationBody);
            
            //--- Erzeugen einer temporären Tabelle
            var tempDiv = document.createElement("div");
            document.body.appendChild(tempDiv);
            tempDiv.innerHTML = '<table id="temp_table" style="display: none;">'+htmlcode+'</table>';
            
            var tt = document.getElementById("temp_table");
            objTTBody = DOMEX_getElementByTagName(tt, "TBODY");
            
            for (nIndex = 0; nIndex < objTTBody.childNodes.length; nIndex++)
            {
              objDestinationBody.appendChild(objTTBody.childNode  s[nIndex].cloneNode(true));
            }
            
            //--- temporäre Tabelle wieder löschen
            document.body.removeChild(tempDiv);
        }
        
        /**
        *   Hilfsfunktion, um eine Tabellenzeile mit anderen Werten zu versehen. Diese
        *   Funktion ist notwendig, da innerHTML für TR Elemente für Internet Explorer
        *   nicht funktioniert
        */
        function replaceRowContent(objDestinationRow, htmlcode)
        {
            //--- ablöschen der Zielzeile
            DOMEX_removeChildNodes(objDestinationRow);

            //--- Erzeugen einer temporären Tabelle
            var tempDiv = document.createElement("div");
            document.body.appendChild(tempDiv);
            
            tempDiv.innerHTML = '<table style="display: none;"><tr id="temp_tr">'+htmlcode+'</tr></table>';
            var ttr = document.getElementById("temp_tr");
            
            for (nIndex = 0; nIndex < ttr.childNodes.length; nIndex++)
            {
              objDestinationRow.appendChild(ttr.childNodes[nIndex].cloneNode(true));
            }

            //--- temporäre Tabelle wieder löschen
            document.body.removeChild(tempDiv);
        }

        var arrPreviousValues = new Array();

    /////////////////////////////
    // FUNKTION eines Addieren // 
    /////////////////////////////
        function editplus(nId)
        {
            objRow = document.getElementById("tr_"+nId);
            arrPreviousValues[nId] = objRow.innerHTML;
            var data = {
                values : { mkmenge: getValueByPosition(objRow, "TD", 3),  // postalcode
                           id: nId }
            }; 
            ajax_writeAddress(data);
            setTimeout("doLiveSearch()",50);
        }
        
    /////////////////////////////////
    // FUNKTION eines Subtrahieren // 
    /////////////////////////////////    
        function editminus(nId)
        {
            objRow = document.getElementById("tr_"+nId);
            arrPreviousValues[nId] = objRow.innerHTML;
            var data = {
                values : { mkmenge: getValueByPosition(objRow, "TD", 3),  // postalcode
                           id: nId }
            };
            ajax_writeMinus(data);
            setTimeout("doLiveSearch()",50);
        }
        
        
        
        
        function getValueByPosition(objElement, strTagName, nPosition)
        {
            nCurPosition = 0;
            for (nIndex = 0; nIndex < objElement.childNodes.length; nIndex++)
            {
                if (objElement.childNodes[nIndex].nodeName == strTagName)
                {
                    if (nCurPosition == nPosition)
                    {
                        strValue = objElement.childNodes[nIndex].innerHTML;
                        strValue = strValue.replace(/<em style="color: red">|<\/em>/gi, "");
                        strValue = strValue.replace(/<em style="color: red;">|<\/em>/gi, "");
                        return strValue;
                    }
                    nCurPosition++;
                }
            }
        }
        
        function editCancel(nId)
        {
            objRow = document.getElementById("tr_"+nId);
            replaceRowContent(objRow, arrPreviousValues[nId]);
        }
        
      </script>
        
        
        <div style="margin-left: 10px; margin-top: 10px;">
            Suche nach:&nbsp;<input type="text" style="width: 400px;" onKeyUp="liveSearchStart()" id="query"><br /><br />

            <table id="search_result" border="0" cellpadding="3px" cellspacing="0px">
                <thead>
                    <td align="right">#</td>
                    <td>Name</td>
                    <td align="right">Preis</td>
                    <td align="center">Anzahl</td>
                    <td align="center">&nbsp;</td>
                    <td align="center">&nbsp;</td>
                </thead>
                <tbody >

                </tbody>
            </table>
        </div>
        
        <textarea id="result_jst" style="display:none;">
            {var nCount = 0}
            {for addr in addresses}
                {if addr.mkpreis}
                     <tr id="tr_${addr.id}" class="{if nCount%2 == 0}even{else}uneven{/if}">
                        <td align="right">{var mkn = addr.mknummer.replace(new RegExp("("+query+")", "i"), "<em style=\"color: red;\">$1</em>")}${mkn}</td>
                        <td>{var mkna = addr.mkname.replace(new RegExp("("+query+")", "i"), "<em style=\"color: red;\">$1</em>")}${mkna}</td>
                        <td align="right">${addr.mkpreis}</td>
                        <td align="center">${addr.mkmenge}</td>
                        <td align="center">[ <a href="javascript: editplus(${addr.id})">+</a> ]</td>
                        <td align="center">[ <a href="javascript: editminus(${addr.id})">-</a> ]</td>
                     </tr>
         {eval}
                    nCount++;
                {/eval}    {/if}   
                
             {forelse}
                 <tr><td colspan="7">Keine passende Adresse</td></tr>
             {/for}
             <tr><td colspan="7" align="center">--- Ende der Liste ---</td></tr>
        </textarea>
        
         <div style="margin-left: 10px; margin-top: 10px;">
        <br /><br />
        <form action="index.php" method="post">
    <input name="auswahl" type="hidden" value="" />
    <input name="name" type="hidden" value="<? echo $_POST[name]; ?>" />
    <input name="Zur&uuml;ck" type="submit" value="Zurück" /></form>
    </div>
    n server_adresses.php steht das hier:

    PHP-Code:
    <?php 
        
        $pathToRoot 
    "../../../../";
        include (
    "common_addressspl.php"); 
        
    $objAjax createAjaxObject();
        
    $objAjaxServer $objAjax->getServer();
            if ( 
    $objAjaxServer->isRequest() )
        {
            echo 
    $objAjaxServer->handleRequest();
        }
    ?>
    Da soll der Fehler sein? Wenn ich ein Freizeichen vor <?php setze, dann bekomme ich einen Fehler Header allready send. Cant modify!

    Damit es vollständig ist noch die letzte Datei des Scripts (common_adressesspl.php)

    PHP-Code:
    <?php 
        
        
    require_once("libs/ajason/php/Ajax.php");
         
        class 
    Addresses
        
    {
            public 
    $addresses = array();
            public 
    $query;
        }

        class 
    Address
        
    {
            public 
    $id;
               public 
    $mkmenge;
            public 
    $mknummer;
            public 
    $mkpreis;
            public 
    $mkname;
            public 
    $mkstatus
            
        }

        function 
    searchAddress($strSearchKey)
        {
            
    $arrExplodedSearchKeys explode(" "$strSearchKey);

            
    $arrSearchKeys = array();
            foreach (
    $arrExplodedSearchKeys as $strCurSearchKey)
            {
                if (
    $strCurSearchKey != "")
                {
                    
    $arrSearchKeys[] = strtolower($strCurSearchKey);
                }
            }
            
            
    $objAddressBook = new Addresses();
            
    $objAddressBook->query implode("|"$arrSearchKeys);
            
            
    // 
            // Öffnen der DB von SPL
            
    $server "mysql4.xxx.de";        // Servername
            
    $user "dbxxx";                        // DB-User
            
    $pass "xxx";                        // Passwort
            
    $datenbank "dbxxx";                    // Name der DB

            
    $conn mysql_connect($server$user$pass);
            
    mysql_select_db($datenbank$conn);
            
    //
            
            
    $query "SELECT * FROM products";
            
    $result=mysql_query($query);
            while (
    $daten=mysql_fetch_array($resultMYSQL_ASSOC)) {
                
    $query2 "SELECT * FROM stock_spl WHERE  id_products = $daten[products_id]";
                
    $result2=mysql_query($query2);
                while (
    $daten2=mysql_fetch_array($result2MYSQL_ASSOC)) {
                    
    $anz=$daten2[quantity];
                    
    $idstock=$daten2[id_products];
                    
                } 
                        
                
    $nMatches 0;
                
                
    $objAddress = new Address();
                
    $objAddress->id $daten["products_id"];
                
    $objAddress->mkmenge $anz
                
    $objAddress->mknummer $daten["products_model"];
                
    $objAddress->mkpreis number_format($daten[products_price]*1.162);
                
    $objAddress->mkname $daten["products_description"];
                
                
    $objAddress->mkstatus $bcstatus;
                
                foreach (
    $arrSearchKeys as $strSearchRegEx)
                {
                    if (
    preg_match("/".$strSearchRegEx."/i"$daten["products_model"]) ) {
                        
    $nMatches++;
                        continue;
                    }
                    if (
    preg_match("/".$strSearchRegEx."/i"$daten["products_description"]) ) {
                        
    $nMatches++;
                        continue;
                    }
                }
                
                if (
    $nMatches >= sizeof($arrSearchKeys))
                {
                   
    $objAddressBook->addresses[] = $objAddress;
                }
            }
            return 
    $objAddressBook;
        }
        
        function 
    writeAddress($objValues)
        {
            
    // 
            // Öffnen der DB von SPL
            
    $server "mysql4.xxx.de";            // Servername
            
    $user "dbxxx";                        // DB-User
            
    $pass "xxx";                            // Passwort
            
    $datenbank "dbxxx";                    // Name der DB
            
            
    $conn = @mysql_connect($server$user$pass);
            @
    mysql_select_db($datenbank$conn);
            
    //
            
            
    $objAddress $objValues->values;
            
    $objekt1=$objAddress->mkmenge;
            
    $objekt1++;
            
            
    $query "UPDATE stock_spl SET quantity='".$objekt1."' WHERE id_products=".$objAddress->id;
            
    $result=mysql_query($query);
            
        }
        
        function 
    writeMinus($objValues)
        {
            
    // 
            // Öffnen der DB von SPL
            
    $server "mysql4.xxx.de";            // Servername
            
    $user "dbxxx";                        // DB-User
            
    $pass "xxx";                            // Passwort
            
    $datenbank "dbxxx";                    // Name der DB
            
            
    $conn = @mysql_connect($server$user$pass);
            @
    mysql_select_db($datenbank$conn);
                
    //
            
            
    $objAddress $objValues->values;
            
    $objekt1=$objAddress->mkmenge;
            
    $objekt1--;
            
            
    $query "UPDATE stock_spl SET quantity='".$objekt1."' WHERE id_products=".$objAddress->id;
            
    $result=mysql_query($query);
        }


        function 
    createAjaxObject()
        {
            
    $objAjax = new Ajax();
            
    $objAjax->setOptionAjax::PrependOption"ajax_" );
            
    //$objAjax->setOption( Ajax::DebugOption, true );
            
    $objAjax->setOptionAjax::HandlerOption"server_address.php");
            
    $objAjax->setOptionAjax::EncodeOptiontrue);
            
            
    $objAjax->registerFunction ("searchAddress");
            
    $objAjax->registerFunction ("writeAddress");
            
    $objAjax->registerFunction ("writeMinus");
            
            return 
    $objAjax;
        }
        
    ?>
    ch weiß echt nicht woran das liegen sollte, vorallem weil es bei mir auf dem Testserver geht. Ach und der Liveserver ist bei Domain)Factory.
    Hat jemand einen Tipp?

    PS: der großteil des Scriptes ist von einen aus der Zeitschrift internet-pro übernommen. Livesuche mit Änderungen.
    Geändert von spl (12.05.2006 um 18:40 Uhr)
    Gruß Sebastian

    Webdesign und viel mehr http://lauff.info

    yingiz, deine Wirtschaftsgemeinschaft im Netz - gemeinsam bis zu 60% vom Verkaufspreis oder bis zu 300 € Provisionen verdienen. Jeder profitiert von Jedem! Gemeinsam stark! Jetzt anmelden

  2. #2
    TP-Special Mod steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User steffenk lebt für das TP und seine User Avatar von steffenk
    Registriert seit
    Feb 2005
    Ort
    Haan / NRW
    Beiträge
    12.869
    schwer zu sagen - hast Du mal versucht mit einem absoluten Pfad zu arbeiten ? Da würde ich ansetzen.


    TYPO3 · MySQLDumper · dislabs
    ·
    manche Mühlen mahlen schneller ...
    "Ich habe Rücken"
    Horst Schlämmer


  3. #3
    spl
    spl ist offline
    TP-Insider spl macht alles soweit korrekt Avatar von spl
    Registriert seit
    Sep 2003
    Ort
    Sankt Augustin
    Beiträge
    639
    an dem Pfad liegt es nicht aber ich habe jetzt noch viel experimentiert und versucht im Internet zu lesen. Da gibt es verdammt wenige. Aber ich habe gefunden, das AJASON als antwort den Content-Type: text/json zurückliefert und man das auch auf text/xml ändern kann. Das habe ich getan und gehofft, das jetzt alles läuft - wie bei einem Beitrag im Netz. Aber leider nicht.

    Noch weitere Ideen?
    Gruß Sebastian

    Webdesign und viel mehr http://lauff.info

    yingiz, deine Wirtschaftsgemeinschaft im Netz - gemeinsam bis zu 60% vom Verkaufspreis oder bis zu 300 € Provisionen verdienen. Jeder profitiert von Jedem! Gemeinsam stark! Jetzt anmelden

  4. #4
    spl
    spl ist offline
    TP-Insider spl macht alles soweit korrekt Avatar von spl
    Registriert seit
    Sep 2003
    Ort
    Sankt Augustin
    Beiträge
    639
    Ja. Ich habe es!

    Datei: AjaxServer.php
    PHP-Code:
     $response->setServerVersionAjaxServer::version );

             
    //header( 'Content-Type', 'text/xml' );
             
    header'Content-Type: text/xml' );
             return 
    $json->encode$response );
          } 
    Jetzt wo ich den header umgeschrieben habe, geht es. Ich hoffe das hier hilft dann später anderen.
    Gruß Sebastian

    Webdesign und viel mehr http://lauff.info

    yingiz, deine Wirtschaftsgemeinschaft im Netz - gemeinsam bis zu 60% vom Verkaufspreis oder bis zu 300 € Provisionen verdienen. Jeder profitiert von Jedem! Gemeinsam stark! Jetzt anmelden

+ Antworten

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51