Kører du php5 ? Hvis ja, så prøv: <?php session_start(); class log { //Skriver stringdata samt et timestamp til logfilen events.log. function __construct($stringData) { if (isset($stringData)) { $logfil = "log/events.log"; $date = date("F j, Y, g:i a"); //$date = "morfar"; $fh = fopen($logfil, 'a') or die(""); fwrite($fh, $stringData); fwrite($fh, $date." \n"); fclose($fh); } } // log function
Nej, linje fire indeholder øjensynligt en constructor funktion med samme navn som klassen. Det kan man godt have i PHP4, men ikke med den nye OOP-model i PHP5. Jeg tror, Jakob har ret =)
Ole: Det kan man nu godt - på det punkt er PHP5 bagudkompatibel:
"For backwards compatibility, if PHP 5 cannot find a __construct() function for a given class, it will search for the old-style constructor function, by the name of the class." (http://www.php.net/manual/en/language.oop5.decon.php)
Dermed ikke sagt at det ikke kan være en bedre ide at bruge __construct.
Ja, det hjalp ikke noget at rette den til _construct..
Måske ligger problemet i en anden fil? Den vil heller ikke lave header location rigtigt, og der er også noget rod med dens sessions. Men når det virker andre steder, kan jeg ikke se hvorfor det pludselig er galt nu!
Jeg vil skyde på det er her der sker en fejl:
<?php session_start(); include("classes/currentpage.class.php"); include("classes/log.class.php"); $_SESSION['reference']=array (curPageURL(),"Admin"); //Tjekker om bruger er admin, hvis ikke, sendes bruger til forsiden. if($_SESSION['admin'] != 1 ) { $Log = new log;$Log->log($_SERVER['REMOTE_ADDR']." Har forsøgt uautoriseret adgang til admin.php!!! "); header("Location: index.php"); } include ("classes/users.class.php"); include ("classes/main.class.php"); include ("classes/templates.class.php"); include ("classes/modules.class.php");
//opretter en instans af klasserne main og modules, samt selecter data $objMain = new main; $maindata= $objMain->getData($where); $objModule = new modules; $moduledata = $objModule->getData($where);
//inkluderer alle installerede modulers klasser for($i=0; $i<=count($moduledata);$i++) { if (isset ($moduledata[$i]["modulename"])) { include 'modules/'.$moduledata[$i]["modulename"].'s/'.$moduledata[$i]["modulename"].'s.class.php'; }//Slut på if }//Slut på for
switch($_GET["type"]) { case "endsession": { //destruerer session, og sender bruger til forside $Log = new log;$Log->log($_SESSION['username']." loggede ud af systemet. "); $_SESSION['login'] = 0; $_SESSION['admin'] = 0; session_destroy(); if($_SESSION['login'] != "666") header("Location: index.php"); }//slut på case ..........
For, hvis man prøver at komme ind på denne side (uden at være logget ind) skulle den som i kan se, sende bruger tilbage til index.php. MEN siden forbliver bare blank!
Hvis du slet ikke selv kan debugge, tror jeg, det bliver svært at indkredse problemet. Med alle dine include-filer kan din(e) fejl ligge rigtig mange steder
Jeg synes bare det er svært at debugge på et system der virker alle andre steder. Det virker på andre domæner hvor jeg har brugt det, og jeg tog en ren kopi ned på min pc og kørte det med wamp - ingen problemer der heller.
Så jeg har spurgt dem der hoster sitet, om der er noget galt der, eller om jeg skal foretage nogen indstillinger eller lign. :)
I forbindelse med debugging ændrer det intet, at koden fungerer andre steder. Debugging er debugging - det er bare at følge kæden af hændelser og skrive ud og/eller logge, om der sker det forventede alle steder. Det er ikke svært, når bare man starter ét sted og arbejder sig planmæssigt igennem applikationen =)
Ja det har du nok ret i Ole. Jeg må nok bare i gang fra en ende af! Det irriterer mig bare at et system der virker upåklageligt, pludselig ikke virker når man flytter det over på et andet domæne. (Samme host - Surftown)
Men, ting tolkes jo forskelligt. f.eks. kan en side se fin ud i Firefox, og ligne lort i IE. Det er måske lidt det samme her, det virker på en server, og ikke på en anden.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.