Startersboek PHP & MYSQL
Ik probeer via dit boek(en andere boeken) mijzelf php en mysql aan te leren.
Ik ben aangekomen bij 'Een eigen logboek'(pagina 132)
Volgens mij zitten er onduidelijkheden in de scripts:
Ik heb het text bestand 'log.txt' in de map log geplaatst.
Ik heb het script 'logfile_func.inc.php' foutloos overgenomen van pagina 135.
Ik heb de code van pagina 136 foutloos in 'header.inc.php'opgenomen.
Ook heb ik in 'index.php' in de map opmaak $logpath='log/';
opgenomen.
Toch werkt het niet.
Ik vraag mij af of in de regel(op pagina 136):
include($rootdir . 'log/logpath . 'logfile_func.inc.php');');
niet twee fouten zitten.
nl De variabele $rootdir wordt, in geen enkel script, ervoor, van een waarde voorzien.(wel in het oudere boek)
Ook klopt het aantal '(aanhaligstekens) niet.
Volgens mij moeten de regels zo:
Code (php)
Code (php)
1
2
3
4
5
2
3
4
5
<?php>
$rootdir='../';
if(!isset($logpath)) $logpath='../log/';
include($rootdir . 'log/logpath' . 'logfile_inc.php');
?>
$rootdir='../';
if(!isset($logpath)) $logpath='../log/';
include($rootdir . 'log/logpath' . 'logfile_inc.php');
?>
Helaas werkt het dan ook niet.
Wat doe ik hier fout.
Immers als de scripts niet goed in het boek staan kan ik er ook niet uitkomen.
Staan ze er wel goed in dan hoor ik dit graag; want dan kan ik mijn twee weekse zoektocht voortzetten.
Vriendelijke groeten,
Bertus wikkerink
krijg je ook foutmelddingen? laat ook eens wat code zien want ik ken dat boek niet.
Dat zou allicht dit zijn (wat je al in je voorbeeld aangaf):
En mogelijk dat er ook nog een / tussen moet:
maar dan is ' . ' overbodig en zou dit de uitkomst moeten bieden:
Gewijzigd op 14/11/2010 21:19:16 door Bas IJzelendoorn
Ik heb vandaag weinig tijd maar zal de code zo snel mogelijk plaatsen.
Alvast bedankt voor jullie moeite.
Groetjes,
Bertus Wikkerink
Toevoeging op 15/11/2010 09:16:08:
PS Het book heet "PHP en MYSQL" isbn: 978-90-456-4220-8.
Van: Jochen Franke & Axel Bornträger
Bertus Wikkerink op 14/11/2010 21:12:16:
In ieder geval moet in de 1e regel het ">" teken worden weggehaald.
Ik kan de volledige code niet zien, dus daarom is het lastig om antwoord te geven. Maar wat ik wel zie is dat je een variabele $logpath instelt (regel 3) die je bij het includen (regel 4) niet gebruikt. Wellicht zit daar (een deel van) het probleem.
Gewijzigd op 15/11/2010 14:12:04 door Ozzie PHP
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
//rest
?>
Ik weet niet of dit mag maar ik zal proberen hier het hoofdstuk uit het boek te plaatsen. Misschien dat jullie er wijzer uit worden dan ik. Succes:
Een eigen logboek
-------------------------------------------------------------------------------------------------------------------------
Helaas mag ik dit hier niet laten staan. Dit is schending van de auteurswet. Probeer uw vraag anders te formuleren of maak een samenvatting van het stuk uit het boek.[/modedit]
Toevoeging op 16/11/2010 20:26:52:
Mijn excuses.
In het boek wordt duidelijk verteld dat de codes open source zijn. Dus die kan ik dan wel mededelen:
Er wordt uitgelegd hoe je een logboek kan maken.
Serverinformatie kan worden ingelezen met een superglobale array: $_SERVER.
Zo kun je met $_SERVER['auth_type'] de waarde AUTH_TYPE (type authenticatie voor beveiligde pagina's) ophalen enz...
Mijn site heb ik volgens het boek opgemaakt door in WAMP in WWW een map "www.mijnsite.nl" te maken en in deze map de mappen: admin, catalogus, counter, enquête, gastenboek, klanten, links, log, nieuws, opmaak(hoofdmap), systeem, en contact aan te maken.
Als je het boek volgt dan heb je zelf een opmaak gemaakt en deze gedeeld in een header gedeelte dat je met php met include weer ophaalt. En een gedeelte footer dat je ook met include weer ophaalt. Hierdoor heb je de opmaak mooi gescheiden van de code voor de site.
Je leert de code voor een teller op elke pagina te maken en zo ook een eigen logboek.
De code voor het logboek schrijft gegevens in een text bestand: log.txt dat je in de map log plaatst.
Het bestand dat de ingangen in het logboek maakt heet logfile_func.inc.php.
Die code ziet er zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(!isset($SERVER['REMOTE_ADD'])) $_SERVER['REMOTE_ADD']="n.v.";
if(!isset($SERVER['REQUEST_METHOD'])) $_SERVER['REQUEST_METHOD']="n.v.";
if(!isset($SERVER['SCRIPT_NAME'])) $_SERVER['SCRIPT_NAME']="n.v.";
if(!isset($SERVER['HTTP_USER_AGENT'])) $_SERVER['HTTP_USER_AGENT']="n.v.";
if(!isset($SERVER['HTTP_REFERER'])) $_SERVER['HTTP_REFERER']="n.v.";
if(!isset($logpath)) $logpath="../log/;"$lofile=fopen($logpath."log.txt","a");
fputs($logfile, date("d.m.Y, H:i:s",time()) . "," . $_
SERVER['REMOTE_ADDR'] . "," . $_SERVER['REQUEST_METHOD'] . ",".
$_SERVER['SCRIPT_NAME'] .", ". $_SERVER['HTTP_USER_AGENT'] . ", "
. $_SERVER['HTTP_REFERER'] ."\n";
fclose($logfile);
?>
if(!isset($SERVER['REMOTE_ADD'])) $_SERVER['REMOTE_ADD']="n.v.";
if(!isset($SERVER['REQUEST_METHOD'])) $_SERVER['REQUEST_METHOD']="n.v.";
if(!isset($SERVER['SCRIPT_NAME'])) $_SERVER['SCRIPT_NAME']="n.v.";
if(!isset($SERVER['HTTP_USER_AGENT'])) $_SERVER['HTTP_USER_AGENT']="n.v.";
if(!isset($SERVER['HTTP_REFERER'])) $_SERVER['HTTP_REFERER']="n.v.";
if(!isset($logpath)) $logpath="../log/;"$lofile=fopen($logpath."log.txt","a");
fputs($logfile, date("d.m.Y, H:i:s",time()) . "," . $_
SERVER['REMOTE_ADDR'] . "," . $_SERVER['REQUEST_METHOD'] . ",".
$_SERVER['SCRIPT_NAME'] .", ". $_SERVER['HTTP_USER_AGENT'] . ", "
. $_SERVER['HTTP_REFERER'] ."\n";
fclose($logfile);
?>
Om dit logbestand nu op elke pagina te kunnen oproepen, moet je dit:
logfile_func.inc.php
in de map opmaak in het bestand header.inc.php plaatsen.
EN plaats aan het begin van header.inc.php het bestandje:
Code (php)
(Volgens mij zit hier al een fout in en moet het volgens mij zijn:
include($rootdir . "log/logpath" . "logfile_func.inc.php");
En om nu te zorgen dat er aan het begin van elke pagina een nieuwe regel in log.txt wordt opgenomen, voeg je in index.php(die je als startpagina gebruikt) de regel toe:
$logpath="log/";
Welnu, ik heb dit letterlijk opgevolgd maar het werkt niet: het log.txt bestand blijft leeg.
Wie weet er raad.
Groeten Bertus Wikkerink
Gewijzigd op 15/11/2010 22:42:16 door Bas IJzelendoorn
Mijn eigen logboek werkt.
in de code van logfile_func.inc.php
if(!isset($logpath)) $logpath="../log/"; vervangen door $rootdir="../";
Daarna: $logfile=fopen($logpath,"log.txt","a"); vervangen door:
$logfile=fopen($rootdir,"log/log.txt","a");
en de code in de header verandert in:
et voila: EUREKA.
Een ieder die moeite heeft genomen om ook maar even met mij bezig te zijn geweest, HEEL, HEEL HARTELIJK DANK.
Maar de beste hulp is toch als je het zelf vindt.
Eindelijk kan ik weer verder om net als jullie meer van php te leren.
Hiermede is dit topic gesloten. Nogmaals dank!!!
Bertus Wikkerink