Köra en php sida lokalt i pc?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Mygg@n
Inlägg: 201
Blev medlem: 11 mars 2009, 12:29:35
Ort: Dalarna
Kontakt:

Köra en php sida lokalt i pc?

Inlägg av Mygg@n »

Har hittat en sida jag skulle vilja köra för att analysera ett eeprom från en bil
hur kan jag köra denna sida lokalt utan server?

https://github.com/sebauer/web-tom/blob ... eeprom.php

Kod: Markera allt

<style>
body {
	color: white;
}
</style>
<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";
require_once('../includes/bootstrap.php');
chdir('..');

if($_FILES['eeprom']['tmp_name'] == ''){
    jsCallback('Es wurde kein EEPROM Dump hochgeladen!', true);
    die();
}
$requestId = md5(serialize($_POST).serialize($_FILES).microtime());
$eeprom = _EEPROMUPLOAD.'tmp'.$requestId.'.bin';

if(!move_uploaded_file($_FILES['eeprom']['tmp_name'], $eeprom)){
    jsCallback('Dateiuploads konnten nicht verarbeitet werden!', true);
    die();
}

if(filesize($eeprom)!=_EEPROM_SIZE){
    jsCallback('Unerwartete Dateigröße des hochgeladenen EEPROM Dumps!');
    die();
}
$fileName = $_FILES['eeprom']['name'];
$output = "<h3>EEPROM Analyzer Ausgabe für Datei: {$fileName}</h3><br /><dl>";

// DO ANALYITCAL STUFF
$byteDefinitions = array(
    "model"         =>  array( "35", "37" ),
    "type"          =>  array( "38", "3A" ),
    "side"          =>  array( "3B", "3B" ),
    "FIN"           =>  array( "32", "42" ),
    "idcode"           =>  array( "0A", "19" ),
    "fahrzaehler"   =>  array('6C', '6D'),
    "writes"        =>  array("F2", "F2"),
    "scn"           =>  array("05", "06"),
    "features"      =>  array('07', '07'),
    "schluesselcode" =>  array('A4', 'A5'),
    "wegfahrsperre" =>  array('52', '52'),
    "wegfahrsperre1" =>  array('B4', 'B5'),
    "wegfahrsperre2" =>  array('B6', 'B7'),
    "key"           =>  array('56', '56'),
    "keycode"       =>  array('5C', '5D'),
    "adaption"      =>  array('E3', 'E6'),
    "kupplungsc1" =>  array('9A', '9B'),
    "kupplungsc2" =>  array('9C', '9D'),
    "kupplungsc3" =>  array('9E', '9F'),
    "kupplungsc3zeit" =>  array('A2', 'A3'),
    "fehlercode" =>  array('B6', 'B6'),
    "zaehler" =>  array('A0', 'A1'),
    "killbytes" =>  array('96', '97')
);

$valueList = array(
    "model" =>  array(
        "452"   =>  "Smart Roadster",
        "450"   =>  "Smart ForTwo"
        ),
    "type"  =>  array(
        "332"   =>  " Coupé, 45kW",
        "334"   =>  " Coupé, 60kW",
        "337"   =>  " Coupé, 74kW (Brabus)",
        "434"   =>  "60kW",
        "432"   =>  "45kW",
        "437"   =>  "74kW (Brabus)"
        ),
    "side"  =>  array(
        "1" => "Linkslenker",
        "2" => "Rechtslenker"
        ),
    "features"  =>  array(
        "Smart",
        "Schaltwippen",
        "Servolenkung",
        "Tempomat",
        "Softtip",
        "unbekannt (Bit6)",
        "ohne Klimaanlage",
        "unbekannt (Bit8)"
        ),
    "scn0"  =>  array(
        "",
        "SCN5: ??? (Bit 2)",
        "",
        "",
        "",
        "SCN5: ohne Klima (Bit 6)",
        "SCN5: SB2 (Bit 7)",
        "SCN5: Roadster (Bit 8)"
        ),
    "scn1"  =>  array(
        "",
        "",
        "",
        "SCN6: 45kW (Bit 4)",
        "SCN6: 60kW (Bit 5)",
        "",
        "SCN6: 74kW (Bit 7)",
        ""
        )
        );

        $sEeprom = fopen($eeprom, 'r');

        $model = '';
        foreach( $byteDefinitions as $name => $pos ) {

            $start = hexdec($pos[0]);
            $end = hexdec($pos[1]);
            $length = ($end-$start)+1;

            fseek($sEeprom, $start);
            $value = fread($sEeprom, $length);
            switch( $name ) {
                case "model":
                    $model = $valueList["model"][$value];
                    break;
                case "type":
                    $output .= "
                        <dt>Modell</dt>
                        <dd>$model ".$valueList["type"][$value]."</dd>";
                    break;
                case "FIN":
                    $output .= "
                        <dt>FIN</dt>
                        <dd>$value</dd>";
                    break;
                case "idcode":
                    $output .= "
                        <dt>ID Code (SCN)</dt>
                        <dd>$value</dd>";
                    break;
                case "writes":
                    fseek($sEeprom, hexdec('ED'));
                    $ed = fread($sEeprom, 1);
                    $ed = ord($ed);
                    if($ed == hexdec("FF")){
                        $output .= "
                            <dt>MEG Flashes (Tuningfiles)</dt>
                            <dd>".ord($value)."</dd>";
                    } else {
                        $output .= "
                        <dt>MEG Flashes (sC)</dt>
                        <dd>".ord($value)."</dd>";
                    }
                    break;
                case "features":
                    $value = getBinaryString($value);
                    $featuresArray = array_reverse($valueList['features']);
                    $resultsArray = array();

                    for($i=0;$i<strlen($value);$i++){
                        if($value[$i]=='1'){
                            $resultsArray[] = $featuresArray[$i];
                        }
                    }
                    $resultsArray = array_reverse($resultsArray);
                    $featureString = implode(', ', $resultsArray);
                    $output .= "
                        <dt>Features:</dt>
                        <dd>$featureString</dd>";
                    break;
                case "scn":
                    $scnBytes = str_split($value, 1);

                    $scnArray = array();

                    foreach($scnBytes as $offset => $scnByte){
                        $scnByte = getBinaryString($scnByte);
                        $scnValueList = array_reverse($valueList['scn'.$offset]);
                        for($i=0;$i<strlen($scnByte);$i++){
                            if($scnByte[$i]=='1'){
                                if($scnValueList[$i] != ''){
                                    $scnArray[] = $scnValueList[$i];
                                }
                            }
                        }
                    }
                    var_dump($scnArray);
                    $scnString = implode('<br />', $scnArray);
                    $output .= "
                        <dt>SCN Codierung:</dt>
                        <dd>$scnString</dd>";
                    break;
                case "side":
                    $output .= "
                    <dt>Fahrzeugaufbau</dt>
                    <dd>".$valueList[$name][$value]."</dd>";
                    break;
                case "wegfahrsperre":
                    $valueBinary = getBinaryString($value);
                    $valueDec = hexdec(reset(unpack('H*', $value)));
                    $output .= "
                        <dt>Wegfahrsperre:</dt>
                        <dd>Byte 0x52 = $valueBinary ($valueDec)</dd>";
                    break;
                case "wegfahrsperre1":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Wegfahrsperre I:</dt>
                        <dd>Short B4B5 = $valueDec</dd>";
                    break;
                case "wegfahrsperre2":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Wegfahrsperre II:</dt>
                        <dd>Short B6B7 = $valueDec</dd>";
                    break;
                case "key":
                    $valueDec = hexdec(reset(unpack('H*', $value)));
                    $output .= "
                        <dt>Key (???):</dt>
                        <dd>Byte 0x56 = $valueDec</dd>";
                    break;
                case "keycode":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Key Code (???):</dt>
                        <dd>Short 5C5D = $valueDec</dd>";
                    break;
                case "fahrzaehler":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Fahrzähler:</dt>
                        <dd>Short 6C6D = {$valueDec} km</dd>";
                    break;
                case "kupplungsc1":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Kupplungsschutzklasse I:</dt>
                        <dd>Short 9A9B = {$valueDec}</dd>";
                    break;
                case "kupplungsc2":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Kupplungsschutzklasse II:</dt>
                        <dd>Short 9C9D = {$valueDec}</dd>";
                    break;// kupplungsc3zeit
                case "kupplungsc3":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Kupplungsschutzklasse III:</dt>
                        <dd>Short 9E9F = {$valueDec}</dd>";
                    break;
                case "kupplungsc3zeit":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Zeit in Kupplungsschutzklasse III:</dt>
                        <dd>Short A2A3 = {$valueDec} Minuten</dd>";
                    break;
                case "zaehler":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Zähler (???):</dt>
                        <dd>Short A0A1 = {$valueDec}</dd>";
                    break;
                case "killbytes":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Kill Bytes (???):</dt>
                        <dd>Short 9697 = {$valueDec}</dd>";
                    break;
                case "schluesselcode":
                    $valueDec = reset(unpack('S*', $value));
                    $output .= "
                        <dt>Schlüsselcode:</dt>
                        <dd>Short A4A5 = {$valueDec}</dd>";
                    break;
                case "fehlercode":
                    $valueBinary = getBinaryString($value);
                    $valueDec = hexdec(reset(unpack('H*', $value)));
                    $output .= "
                        <dt>Fehlercode:</dt>
                        <dd>Byte 0xB6 = $valueBinary</dd>";
                    break;
                case "adaption":
                    $adaptionsBytes = str_split($value, 1);
                    $start = $byteDefinitions['adaption'][0];
                    $bytesOutput = array( );
                    foreach($adaptionsBytes as $key => $byte){
                        $byteVal = "0x".strtoupper(dechex(hexdec($start)+$key));
                        $valueBinary = getBinaryString($byte);
                        $valueDec = hexdec(reset(unpack('H*', $byte)));
                        $bytesOutput[] = "$byteVal\t$valueBinary ($valueDec)";
                    }
                    $output .= "
                        <dt>Adaptionswerte:</dt>
                        <dd>".implode('<br/>',$bytesOutput)."</dd>";
                    break;
                default:
                    $output .= "
            <dt>$name</dt>
            <dd>".$valueList[$name][$value]."</dd>";
                    break;
            }
        }
        $output .= '</dl>';
        echo "<div id='analysisOutput'>";
        echo $output;
        echo "</div>";
        analyzerCallback();

        function getBinaryString($value){
            return str_pad(decbin(hexdec(reset(unpack('H*', $value)))), 8, '0', STR_PAD_LEFT);
        }

        ?>
ToPNoTCH
Inlägg: 4847
Blev medlem: 21 december 2009, 17:59:48

Re: Köra en php sida lokalt i pc?

Inlägg av ToPNoTCH »

Nej.
Eftersom PHP är serverside. D.v.s Koden som kommer till din läsare ser inte ut så där.

Du får nog sätta upp en lokal server på din PC.
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Köra en php sida lokalt i pc?

Inlägg av Kulla »

Installera XAMP och du har allt du behöver för att köra den.
Mygg@n
Inlägg: 201
Blev medlem: 11 mars 2009, 12:29:35
Ort: Dalarna
Kontakt:

Re: Köra en php sida lokalt i pc?

Inlägg av Mygg@n »

Ok, då får jag installera XAMP, tack för info :-)
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Köra en php sida lokalt i pc?

Inlägg av Wedge »

Det finns PHP-kompilatorer som skapar körbar kod utan att behöva blanda in en webbserver lokalt.
https://www.thefreecountry.com/compilers/php.shtml
SeniorLemuren
Inlägg: 7779
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Köra en php sida lokalt i pc?

Inlägg av SeniorLemuren »

Fördelen med XAMP är ju att man även får med mySQL. Jag vet nästan inget projekt med PHP jag gjort som inte talat med SQL. Även om det bara är frågan om en inloggningssida så använder jag mySQL för att spara passord och användarnamn.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Köra en php sida lokalt i pc?

Inlägg av Wedge »

PHP utan server är som sagt möjligt, men i det här fallet... nja...
Koden använder sig av $_POST, $_FILES, move_uploaded_file() etc, dvs mycket som är beroende av data skickas från ett webbformulär.
Dessutom skickar den ut HTML, och det kommer att se ut som skit i ett terminalfönster, om man trots allt skulle få igång den.
Räkna med en hel del omskrivningar för att göra stand-alone-kod av den.
Användarvisningsbild
Glenn
Inlägg: 33667
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Köra en php sida lokalt i pc?

Inlägg av Glenn »

Fast det är väl inget problem att köra det i en webbrowser mot lokal webserver, frågan är väl mer om man har alla grejer som används på servern.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Köra en php sida lokalt i pc?

Inlägg av Wedge »

TS ville undvika webbservern. Kanske för att ha en enda .exe-fil som är lätt att flytta (USB-sticka) .
Kulla
Inlägg: 1264
Blev medlem: 7 januari 2010, 10:06:11
Ort: Sandared
Kontakt:

Re: Köra en php sida lokalt i pc?

Inlägg av Kulla »

Det är svårt att undvika den i denna fall, därför rekommenderade jag XAMPP som har inbygd webbserver, php, mysql och allt som han kan behöva.

Enklaste sätt att köra denna utan webbserver som ett fil är att skriva om kod i javascript och ha det i <script> taggar i själva filen, då blir det bara en .htm fil.
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Köra en php sida lokalt i pc?

Inlägg av johano »

Wedge skrev:PHP utan server är som sagt möjligt, men i det här fallet... nja...
Koden använder sig av $_POST, $_FILES, move_uploaded_file() etc, dvs mycket som är beroende av data skickas från ett webbformulär.
Dessutom skickar den ut HTML, och det kommer att se ut som skit i ett terminalfönster, om man trots allt skulle få igång den.
Räkna med en hel del omskrivningar för att göra stand-alone-kod av den.
Ja i sedvanlig "cowboy-anda" (som är så oerhört vanligt i php-projekt(!)) så är ju allt en enda j-vla röra med formatteringskod hejvilt blandat med programlogik...
Hade det varit byggt lite mer strukturerat så hade det varit enkelt att lyfta ut programlogiken och göra ett standalone script av det.
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Köra en php sida lokalt i pc?

Inlägg av BJ »

Det känner jag igen från mina filer.
Menar du att det finns andra språk
där det ser bättre ut?
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: Köra en php sida lokalt i pc?

Inlägg av johano »

Njae, det är kanske inte språket i sig som är huvudproblemet utan kanske mer att php "attraherar" en viss typ av utvecklare :wink:
BJ
Inlägg: 8185
Blev medlem: 11 april 2007, 08:14:53
Ort: En_stad

Re: Köra en php sida lokalt i pc?

Inlägg av BJ »

Jaha. :)
Mygg@n
Inlägg: 201
Blev medlem: 11 mars 2009, 12:29:35
Ort: Dalarna
Kontakt:

Re: Köra en php sida lokalt i pc?

Inlägg av Mygg@n »

Det blev en annan lösning, fanns mer filer färdigt att lägga på en server så jag har ju en plats på one.com:s webbhotell där jag laddade upp allt, fick skapa några mappar men sen funkade det.
https://code.google.com/archive/p/web-tom/
Skriv svar