Seltsamer / Unbeschreiblicher Fehler

styler2go

Erfahrenes Mitglied
Hallo!

Ich zerbreche mir hier seit etwa einer Stunden den Kopf über einen Fehler bei einem meiner PHP scripts.

Das Script ist hier erreichbar:

http://server.dyndns.tv/star/

Das Problem sieht man ja.

In der PHP Datei sieht der Teil so aus:

PHP:
function CheckOn()
{
     $sql= mysql_query("SELECT * FROM gast") or die(mysql_error());
     while ($send = mysql_fetch_array($sql))
     {
   if ($send['ip'] == $_SERVER['REMOTE_ADDR'])
  {
  mysql_query("UPDATE gast SET time = '".time()."' WHERE ip = '".$_SERVER['REMOTE_ADDR']."'") or die(mysql_error());
  } else {
  mysql_query("INSERT INTO gast (ip, time) VALUES ('".$_SERVER['REMOTE_ADDR']."', '".time()."')") or die(mysql_error());
  }
     if (time() - $send['time'] > 300)
    {
    mysql_query("DELETE FROM gast WHERE id '".$send['id']."' = LIMIT 1;");
    }  }
mysql_query("UPDATE user SET seite = '".$_SERVER['REQUEST_URI']."' WHERE id = '".$_SESSION['user']."' LIMIT 1;");
    $sqlu = mysql_query("SELECT * FROM user WHERE id = '".$_SESSION['user']."'") or die(mysql_error());
   $err = mysql_fetch_assoc($sqlu);
    if ($err['rechte'] != $_SESSION['recht'])
    {
      $_SESSION['recht']  ==   $err['rechte'];
    }
    $sql = mysql_query("UPDATE user SET lastaccess = '".time()."' WHERE id = '".$_SESSION['user']."' LIMIT 1;") or die(mysql_error());
    $sql= mysql_query("SELECT * FROM user") or die(mysql_error());
    while ($send = mysql_fetch_array($sql))
    {
    if (time() - $send['lastaccess'] > 900)
    {
    mysql_query("UPDATE user SET UserSession = NULL WHERE id = '".$send['id']."' LIMIT 1") or die(mysql_error());
    } }
}
?>

Auf der Seite wir das allerdings als normaler Text angezeigt. Wieso? Was mache ich falsch?

Edit:

Ein Blick in den Qulltext zeigt, dass das PHP script einfach so als Text übernommen wird.
 
Zuletzt bearbeitet:
Oh nein, peeeinlich!

Wem das auch mal passieren sollte: Immer prüfen, ob ganz am Afang <?php steht und nicht nur <?

:D:D:D
 
Das kann man in deinem Codeabschnitt nicht sehen, aber ich hatte das Phänomen mal, weil ich in der php.ini short_open_tags auf off gesetzt hatte und ein Script mit eben diesen geöffnet wurde. Vllt. mal mit <?php anfangen?

Edit: Wieder zu langsam, ich glaub ich sollte nach hause:D
 
Haha, danke,

Trotzdem, peinlich^^

Binde doch noch für deine Suchfunktion:


PHP:
<?php
/* CODE */
$forbidden = array
			("<",">","../","..","apache","pwd","passwd","information_schema","columns","tables","drop","mysql_version()","mysql","@@version","from","union","database()","select","alert","h1","(",")","script","'","x0","0x00","XSS","SRC");        
    foreach ($_REQUEST as $var) {
    foreach($forbidden as $bad) {
	$pos = strpos(strtolower($var),$bad);
        if(!($pos === false)) {
        die("<script>alert('{Injection fail.}')</script>");
        }
    }
}
/* CODE */
?>

Wenn du das nicht schon hast, schüzt vor einigen Injection's nur falls du es natürlich nicht hast oder anderst gelöst hast. ;)
 
Zurück