abonnement Unibet Coolblue Bitvavo
pi_47152288
Ik wil graag de volledige inhoud van alle bestanden op mijn webserver inlezen in een array.
Dit wil ik gebruiken om een sitemap te maken. De pagina's/directory's worden vervolgens weergegeven op een pagina om ge(de)selecteerd te worden en wat overige opties.

Maar hoe lees ik de volledige inhoud van de root uit en stop deze in een array?
Ik dacht aan het volgende, maar dat werkt mooi niet! Sterker nog, als ik de functie aanroep wordt een bestand ter download aangeboden.
Kan iemand me op weg helpen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function readfilelist($dir)
 {
  if ($handle = opendir($dir)) 
   {
    // Dit is de juiste manier om door een directory te wandelen. 
    while (false !== ($file = readdir($handle))) 
     { if(is_dir($file))
      {
       readfilelist($file);
      }
      $file_arr[]= $file;
     }
    closedir($handle);
   }
  }
pi_47152746
quote:
Op zondag 11 maart 2007 13:28 schreef SkaterSam het volgende:

[..]

Ja, dat zou natuurlijk ideaal zijn! Ik had het echter op deze manier gedaan, omdat ik ook argumenten moet opgeven die vervangen moeten worden in de query (dus een :1 wordt bijvoorbeeld $obj_id), maar ik vond het handiger dat dit in twee stappen ging. Ik neem aan dat ik het bijvoorbeeld ook gewoon in de execQuery had kunnen zetten ($db->execQuery($query, $enkele_argumenten_ter_vervanging)), ik geloof dat jij iets dergelijks bedoelt. Want mijn vraag was hoe ik die vervangende argumenten in de prepareQuery function kreeg.
Je kan ook eens kijken naar de aanpak in PDO (>= php5.1): http://nl2.php.net/manual/en/ref.pdo.php

Bijv:

1
2
3
4
5
6
<?php
$sth
= $dbh->prepare('SELECT name, colour, calories
   FROM fruit
   WHERE calories < ? AND colour = ?'
);
$sth->execute(array(150, 'red'));
?>
quote:
Hmmm, ja dat kan, ik werk echter met een script die de Errorlog uitleest van Apache2. Dan krijg ik op mijn browserscherm altijd de laatste errors die Apache2 ontdekt. Maar ik weet niet zeker of de Errorlog alle errors die error_reporting(E_ALL) oppikt, ook pakt.
Tijdens het ontwikkelen kan je het beste gewoon errors op je scherm weergeven ipv alleen een error log te gebruiken.
Ik zou wel Apache errors (404s, 403s) scheiden van PHP logs. Die hebben niks met elkaar te maken.

[ Bericht 3% gewijzigd door smesjz op 11-03-2007 13:56:53 (quote tag fix) ]
  zondag 11 maart 2007 @ 14:20:49 #93
65471 SkaterSam
Lurking Galore
pi_47153676
Thanks smesjz! Ik ben misschien gewoon nog te veel bezig met functioneel programmeren en overgooien van waardes, terwijl dat dus ook anders kan. Het vergt even een andere manier van denken. Ik zal eens even kijken hoe ik mijn code nu kan aanpassen om het beter OO te maken, en beter te laten werken.

edit [14.25]: Ik zie nu pas dat het volgende gebeurt: $dbh->prepare() wordt opgeslagen in $stmt en deze wordt vervolgens gebruikt voor de rest. Hoe werkt dit dan ? Neemt $stmt de class eigenschappen over ofzo ?

[ Bericht 12% gewijzigd door SkaterSam op 11-03-2007 14:33:44 ]
Let's make life easy
Typo's are the demon spawn from hell !
  zondag 11 maart 2007 @ 14:21:29 #94
85514 ralfie
!Yvan eht nioj
pi_47153713
quote:
Op zondag 11 maart 2007 13:45 schreef beerten het volgende:
Ik wil graag de volledige inhoud van alle bestanden op mijn webserver inlezen in een array.
Dit wil ik gebruiken om een sitemap te maken. De pagina's/directory's worden vervolgens weergegeven op een pagina om ge(de)selecteerd te worden en wat overige opties.

Maar hoe lees ik de volledige inhoud van de root uit en stop deze in een array?
Ik dacht aan het volgende, maar dat werkt mooi niet! Sterker nog, als ik de functie aanroep wordt een bestand ter download aangeboden.
Kan iemand me op weg helpen?
[ code verwijderd ]
deze functie werkt niet omdat hij in een oneindige lus raakt. Deze manier van directories uitlezen retourneert namelijk in elke directory ook een handle naar zijn parent directory (. en ..) waardoor php van parent naar child directory en vice versa blijft gaan tot hij ergens vast loopt. Daarnaast is het voor grote directories mogelijk dat php crashed omdat hij in een te diepe recursiviteit raakt (of hoe je dat ook zegt )

Anyway, een paar van deze threads terug heeft iemand een functie gemaakt die zonder recursiviteit werkt gepost, dit kwam neer op het volgende:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dirstack
=array('C:\\program files\\Apache group\\Apache2\htdocs');
while(
sizeof($dirstack)!=0) {
   
$dir=array_shift($dirstack);
   if (
$handle=opendir($dir)) {
      while(
false!==($file=readdir($handle))) {
        if (
$file=='.' || $file=='..') continue;
        if (
is_dir($dir.'\\'.$file)) $dirstack[]=$dir.'\\'.$file;
        else
$files[]=$dir.'\\'.$file;
      }
   }
}
?>
of zoiets
pi_47153833
bestaat er een programma dat realtime kan refreshen zodra er een melding in bijvoorbeeld je errorlog bij komt (in linux kan je dit doen) echter onder windows zou ik het ook wel handig vinden als ik bijvoorbeeld de laatste 5 meldingen kan zien (in realtime)
  zondag 11 maart 2007 @ 14:33:15 #96
65471 SkaterSam
Lurking Galore
pi_47154147
quote:
Op zondag 11 maart 2007 14:24 schreef mschol het volgende:
bestaat er een programma dat realtime kan refreshen zodra er een melding in bijvoorbeeld je errorlog bij komt (in linux kan je dit doen) echter onder windows zou ik het ook wel handig vinden als ik bijvoorbeeld de laatste 5 meldingen kan zien (in realtime)
Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.
Let's make life easy
Typo's are the demon spawn from hell !
pi_47159059
quote:
Op zondag 11 maart 2007 14:33 schreef SkaterSam het volgende:

[..]

Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.
volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt wel
pi_47160426
quote:
Op zondag 11 maart 2007 16:40 schreef Floxxx het volgende:

[..]

volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt wel
ik ben dus eigenlijk opzoek naar een windows equivalent van tail -f (thnx, kwam eff niet meer op de naam )

dat minimize en restore kan ik e.v.t. met dreamweaver ook doen

--edit--

doordat ik nu de naam weet, kon ik googlen:

http://sourceforge.net/projects/tailforwin32/
eens kijken of dat iets is..
pi_47169978
shit mijn template parser vind de punten in domein namen niet leuk:
zie [PHP/(My)SQL] voor dummies - Deel 40 daar mijn template parser..

zodra ik http://home.mschol.eu/pagina.php intik als een url stikt mijn template parser met de volgende melding:
1
2
3
Warning: parsefile( | About Us | Site Map | Privacy Policy | Contact Us | ©2003 Company Name): failed to open stream: No error in d:wwwanime_argewebtemplatetemplateparser.php on line 29

Warning: parsefile(): Failed opening '<a href='http://home.mschol.eu/pagina.php' target='_blank' ><img src='../images/valid-401.gif' alt='' /></a> | <a href='#'>About Us</a> | <a href='#'>Site Map</a> | <a href='#'>Privacy Policy</a> | <a href='http://tweakers.net'>Contact Us</a> | ©2003 Company Name' for inclusion (include_path='.;c:php4pear') in d:wwwanime_argewebtemplatetemplateparser.php on line 29


hij wil dus de opgegeven string als bestand gaan behandelen, maar waarom weet ik niet

--edit--

oplossing gevonden:
http://www.devshed.com/sh(...)ass-with-PHP-Part-I/
en dan bij topic getting info from mysql .

[ Bericht 10% gewijzigd door mschol op 12-03-2007 09:13:10 ]
  FOK!-Schrikkelbaas maandag 12 maart 2007 @ 07:58:53 #100
1972 Swetsenegger
Egocentrische Narcist
pi_47179933
quote:
Op zondag 11 maart 2007 12:19 schreef super-muffin het volgende:
er is een truukje voor, er word een regex gebruikt
[ code verwijderd ]

Deze gebruik ik op mijn website.
Maar vlak ook de mogelijkheid van Multiviews niet uit.
pi_47187644
Wat bedoel je precies Swets?
  maandag 12 maart 2007 @ 13:42:56 #102
21410 Fliepke
Serieuze waarheid
pi_47188524
Ik postte laatst ongeveer dit en ik wilde deze count groeperen per dag. Zodat ik per dag weet hoeveel nieuws er is gepost.

SELECT Count(*) FROM `items` WHERE type = 'nieuws'
AND posttime BETWEEN 1167609600
AND 1173657600

Deze laatste regel kreeg ik als tip in het vorige topic, maar dat werkt niet. Ik moet dus vast nog een trucje uithalen, maar ik weet niet wat:
GROUP BY FROM_UNIXTIME(timestamp, '%Y%m%d')
  FOK!-Schrikkelbaas maandag 12 maart 2007 @ 14:22:18 #103
1972 Swetsenegger
Egocentrische Narcist
pi_47190016
quote:
Op maandag 12 maart 2007 13:16 schreef super-muffin het volgende:
Wat bedoel je precies Swets?
Met multiviews kan je de extentie weglaten dus www.domein.nl/pagina/index ipv www.domein.nl/pagina/index.php

en je kan dan ook alles wat normaal met een ? achter je pagina komt dmv een / neerzetten.

Zie bv http://www.123swets.com/archief/1 waar dus eigenlijk http://www.123swets.com/archief.php?id=1 staat
  maandag 12 maart 2007 @ 14:29:37 #104
21410 Fliepke
Serieuze waarheid
pi_47190234
quote:
Op maandag 12 maart 2007 13:42 schreef Fliepke het volgende:
Ik postte laatst ongeveer dit en ik wilde deze count groeperen per dag. Zodat ik per dag weet hoeveel nieuws er is gepost.

SELECT Count(*) FROM `items` WHERE type = 'nieuws'
AND posttime BETWEEN 1167609600
AND 1173657600

Deze laatste regel kreeg ik als tip in het vorige topic, maar dat werkt niet. Ik moet dus vast nog een trucje uithalen, maar ik weet niet wat:
GROUP BY FROM_UNIXTIME(timestamp, '%Y%m%d')
Ik heb nu dit maar dan krijg ik eigenlijk niks
SELECT Count( * ), day(posttime) AS blaat
FROM `items`
WHERE TYPE = 'nieuws'
AND posttime
BETWEEN 1167609600
AND 1173657600
GROUP BY day( posttime )

(dit dus
Count( * ) blaat
874 NULL )
pi_47190787
1
2
3
4
5
6
7
8
[14:34:26] <Hmail> SELECT Count( id ) , day( FROM_UNIXTIME( posttime ) ) AS blaat
[14:34:26] <Hmail> FROM `items`
[14:34:26] <Hmail> WHERE TYPE = 'nieuws'
[14:34:26] <Hmail> AND posttime
[14:34:26] <Hmail> BETWEEN 1167609600
[14:34:26] <Hmail> AND 1173657600
[14:34:26] <Hmail> GROUP BY blaat
[14:34:26] <Hmail> LIMIT 0 , 30

Dat dus
  maandag 12 maart 2007 @ 14:44:14 #106
21410 Fliepke
Serieuze waarheid
pi_47190841
hehe
  maandag 12 maart 2007 @ 14:48:06 #107
65471 SkaterSam
Lurking Galore
pi_47190998
Even vraagje, als ik moet kiezen tussen md5() en sha1(), welke van de twee raden jullie dan aan ? Ik heb helaas geen beschikking over hash()...
Let's make life easy
Typo's are the demon spawn from hell !
pi_47191336
md5
pi_47191674
Ik zou idd ook voor md5 kiezen, maar alleen omdat ik daarmee bekend ben. Geen idee hoe het zit met performance, of ingewikkeldheid van parameters bij SHA1
  maandag 12 maart 2007 @ 15:18:36 #110
65471 SkaterSam
Lurking Galore
pi_47192158
Behehe, dit staat ook echt in het commentaar voor sha1():
quote:
Note that the sha1 algorithm has been compromised and is no longer being used by government agencies.
Let's make life easy
Typo's are the demon spawn from hell !
  maandag 12 maart 2007 @ 15:44:06 #111
65471 SkaterSam
Lurking Galore
pi_47193129
Als ik bijvoorbeeld een paar sessie variabelen heb:

1
2
3
$_SESSION['admin']['validated']['user']
$_SESSION['admin']['validated']['token']
$_SESSION['admin']['validated']['time']

Kan ik deze allemaal tegelijkertijd leegmaken door een hogere stap te unsetten ? Zo dus:

1unset($_SESSION['admin']['validated']);
Let's make life easy
Typo's are the demon spawn from hell !
  maandag 12 maart 2007 @ 15:49:18 #112
42636 TheSeeker_NL
Damn fine coffee
pi_47193402
nevermind, fixed

[ Bericht 96% gewijzigd door TheSeeker_NL op 12-03-2007 16:08:23 ]
pi_47194027
quote:
Op maandag 12 maart 2007 15:18 schreef SkaterSam het volgende:
Behehe, dit staat ook echt in het commentaar voor sha1():
Desondaks is sha1 nog veiliger dan MD5. Je kan via mhash module of hash (php5) veel meer hashing algoritmes aan dan bovengenoemde.
Let wel op dat je problemen kan krijgen met compatibiliteit (zo snapt pam_mysql geen sha256 encryptie) en hetzelfde geldt bijv. voor Dovecot IMAP
  maandag 12 maart 2007 @ 16:38:29 #114
65471 SkaterSam
Lurking Galore
pi_47195569
quote:
Op maandag 12 maart 2007 16:03 schreef smesjz het volgende:
Desondaks is sha1 nog veiliger dan MD5. Je kan via mhash module of hash (php5) veel meer hashing algoritmes aan dan bovengenoemde.
Het vervelende is alleen dat ik verder geen rechten of niks heb op de server, ik heb mij maar te houden aan de instellingen van de server, dus ik kan wel kijken of die module er al op staat, maar anders wordt het toch sha1...
Let's make life easy
Typo's are the demon spawn from hell !
  maandag 12 maart 2007 @ 17:25:18 #115
65471 SkaterSam
Lurking Galore
pi_47197325
Ik heb mijn database class nu zo geschreven dat je zo een query uitvoert:

1
2
3
4
5
$db->prepareQuery($query);
$db->execQuery($obj_id);
while($result = $db->fetch()) { 
  // echo of weet ik veel wat
}

Maar nu zie ik bijvoorbeeld bij PDO en andere classes ook dat ze het liever anders doen, dus dat een nieuwe instantie van een class in een variabele wordt gedaan, zoals dit:

1
2
3
4
5
$stmt = $db->prepareQuery($query);
$stmt->execQuery($obj_id);
while($result = $stmt->fetch()) { 
  // echo of weet ik veel wat
}

Ik vroeg me af wat het verschil tussen deze twee manieren van code was, en of het een dus betere praktijk is dan de ander. Ik weet in ieder geval (ik probeerde het even), dat je voor de tweede methode dus een nieuwe class moet maken (je scheid verbinding maken met uitvoeren) en dat je een nieuwe class instantieert (als je dan twee queries hebt, heb je dan ook een nieuwe class instantie nodig...?). Het lijkt me logisch om de tweede code te doen vanwege de scheiding van MySQL verbinding class met MySQL query uitvoeren class, maar zoals ik al aangaf verlies ik bepaalde functies uit de ene class die ik nodig heb bij de ander, en ben ik benieuwd wat er gebeurt als je twee instanties van dezelfde class hebt (twee queries...). Iemand (smesjz? )
Let's make life easy
Typo's are the demon spawn from hell !
pi_47198852
weet iemand of het mogelijk is om de 'extension' php_pdo_mysql.dll te laden in php? Mijn hosting is zo slim geweest om alleen sqlite2 drivers voor pdo beschibaar te stellen
..///
pi_47204138
quote:
Op maandag 12 maart 2007 15:18 schreef SkaterSam het volgende:
Behehe, dit staat ook echt in het commentaar voor sha1():
[..]
En ook in het commentaar voor MD5, en in zekere mate met hoger belang omdat MD5 reduceert naar een hash met minder bits
  dinsdag 13 maart 2007 @ 00:46:13 #118
12880 CraZaay
prettig gestoord
pi_47214953
quote:
Op maandag 12 maart 2007 14:56 schreef Darkomen het volgende:
md5
Omdat? SHA1 is nog steeds veiliger dan MD5.
pi_47228364
quote:
Op maandag 12 maart 2007 17:25 schreef SkaterSam het volgende:
Ik heb mijn database class nu zo geschreven dat je zo een query uitvoert:
[ code verwijderd ]

Maar nu zie ik bijvoorbeeld bij PDO en andere classes ook dat ze het liever anders doen, dus dat een nieuwe instantie van een class in een variabele wordt gedaan, zoals dit:
[ code verwijderd ]

Ik vroeg me af wat het verschil tussen deze twee manieren van code was, en of het een dus betere praktijk is dan de ander.
Ik zou de functie query() een class laten returnen zodat je met het resultaat verschillende dingen kan doen. :)
1
2
3
4
5
6
7
<?php
$result
= $db->query('SELECT name FROM news WHERE id = ?', $id);
echo
$result->numRows();
while(
$news = $result->fetchRow()) {
   echo
$news->name;
}
?>
..///
pi_47230391
ik heb zojuist op windows vista weer apache 2.0, php 5, mysql5.0 en pma 2.9.2 geinstalleerd en geconfigureerd. enkel als ik v mysql gui tools (query browser) naar mysql gaat is het geen probleem. me pagina's maken ook gewoon connectie met mysql en dit in php.ini allemaal gewoon de mysql extensies geladen. Das alles werkt. Enkel blijft PMA zeueren dat die mysql extensie niet geladen kan worden. ik heb hier naar gezocht maar enigste wat ik kan vinden is de dll en de lib van mysql toevoegen. dat is ook gewoon gedaan. maar pma blijft enkel zeuren...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')