login  Naam:   Wachtwoord: 
Registreer je!
 Nota's op tutorial:

Tutorials > PHP > Bestandssysteem
Pagina:

Reacties op de tutorial Bestandssysteem


Offline  Voldemort
Gepost op: 08 oktober 2006 - 18:14
PHP ver gevorderde

Handige tutorial, alleen heb ik een vraag:

Als je bv. een ledensysteem maakt en in die bestaat uit:

id | gebruikersnaam | wachtwoord | mailadres

En er staat iets in als:

1 | Voldemort | **** | voldemort@voldemort.be
2 | svm | **** | svm@svm.nl
3 | Ander lid | **** | lid1@lid.com
4 | Ander lid 2 | **** | lid2@lid.com
5 | Ander lid 3 | **** | lid3@lid.com
6 | Ander lid 4 | **** | lid4@lid.com

En ik wil:

>> Alle info van "Ander lid 2"
>> De gebruikersnaam van het lid met id 2
>> Etc

Hoe kan je zo die dingen perfect uitlezen? Hoe plaats je ze best in je bestand (explode achteraf?)?

Dat mis ik.

Voor de rest een hele goede tutorial.

Offline  svm
Gepost op: 08 oktober 2006 - 18:41
PHP ver gevorderde

Ik heb zelf ook zo'n ledensysteem gescript.
Maar daarbij wordt er voor elke user een appart PHP-bestand aangemaakt.
In dit bestand staan zijn gegevens in variabellen opgeslagen.
Zo kun je deze includen en de gegevens er gemakkelijk uit halen.

Als je het op jou manier wilt doen, dan is het het slimste om een PHP-bestand aan te maken waar je voor elke user een array aanmaakt.
Hier staan dan alle gegevens in.
Bijvoorbeeld in users.php:
  1. <?
  2. $1 = array("gebruikersnaam" => "Voldemort", "w8w" => "ab12cd", "email" => "voldemort@voldemort.be");
  3. $2 = array("gebruikersnaam" => "svm", "w8w" => "dc21ba", "email" => "svm@svm.be");
  4. ?>

Bij het eruithalen van de gegevens kun je nu dit bestand includen en via de $id oproepen.
Bij het erin zetten:
  1. <?
  2. $inhoud = file_get_contents("users.php");
  3.  
  4. for($i = 1; if(strpos($inhoud, ."\$".$i)); $i++){
  5. $fp = fopen("users.php", 'a');
  6. fwrite($fp, '\$'. $i .' = array("gebruikersnaam" => "'. $_POST["gebruikersnaam"].'", "w8w" => "'. md5($_POST["w8w"]).'", "email" => "'. $_POST["email"].'");');
  7. fclose($fp);
  8. }
  9. ?>
:!:Fouten kunnen erin zitten:!:

Als het niet duidelijk is hoor ik het wel.

MVG
Stefan

Offline  Voldemort
Gepost op: 10 oktober 2006 - 17:38
PHP ver gevorderde

Waarom heb je een for-lus nodig bij het erin zetten, het is toch maar 1 user in te zetten en 1 bestand te openen?

Offline  svm
Gepost op: 11 oktober 2006 - 11:51
PHP ver gevorderde

Er wordt gezocht wat het eerst volgende ID is, als je de code goed bekijkt, dan zie je dat daarvoor de for lus aanwezig is.

Offline  ikkedikke
Gepost op: 11 oktober 2006 - 16:41
PHP expert

$inhoud = substr(file_get_contents("bestand.php"), 4, 20);
geeft tekens 5 t/m 24 als ik het goed heb. misschien kan je er bij zetten dat dit voor grote bestanden niet echt efficient is..

en voor dat probleem van voldemort heeft men de functie file()

Offline  svm
Gepost op: 12 oktober 2006 - 21:09
PHP ver gevorderde

Het zou de tekens van 5 t/m 19 moeten geven, zie het overzihct maar van hier en php.net.
En waarom zou dit voor grote bestanden niet echt efficiënt zijn?

Offline  ikkedikke
Gepost op: 12 oktober 2006 - 21:19
PHP expert

bij mij geeft het script
  1. <?
  2. $string = "0123456789";
  3. echo substr($string,4,5);
  4. ?>

de output:
45678

en wat die efficientie betreft: het hele bestand wordt uitgelezen en ergens in het werkgeheugen gezet. dit kost allemaal leestijd in je harde schijf en werkgeheugen

Offline  Thomas
Gepost op: 18 oktober 2006 - 14:03
Moderator

Enkele notities:
* Als je een niet-bestaand bestand probeert te openen, of een leeg bestand, dan gaat fread($fp, filesize($file)) niet goed, omdat filesize dan de mist in ging geloof ik.

* het belang van fclose
Het moet misschien wat beter benadrukt worden dat het sluiten van geopende bestanden zéér belangrijk is

* problemen bij simultaan openen / lezen / schrijven van bestanden
Webservers zijn multithreaded - dit houdt in dat een script meerdere keren "tegelijkertijd" aangeroepen kan worden. Een (inmiddels) klassiek voorbeeld van wanneer er problemen ontstaan bij het simultaan lezen / schrijven naar een bestand is bij een poll, waarbij voor de opslag van het aantal gekozen opties gebruik wordt gemaakt van een bestand. Problemen hiermee kun je omzeilen met flock().

@Voldemort
Waarom maak je geen gebruik van XML om hierin data op te slaan? Dan heeft deze informatie ook meteen structuur.

Offline  svm
Gepost op: 18 oktober 2006 - 14:11
PHP ver gevorderde

Over het eerste punt:
Dit kun je met if's controleren, ik zal het bij paragraaf 7 (oplossingen) vermelden.

Over het tweede punt:
Aangepast.

Over het derde punt:
Ik snap niet wat je bedoeld .

Offline  W0etah
Gepost op: 01 december 2006 - 22:56
PHP beginner

Ik vindt dit een fantastische tutorial, heb er heel wat uit geleerd

Offline  gifit
Gepost op: 16 mei 2007 - 17:53
Lid

dit is nou typisch iets van php, gewoon prachtig, goed uitgelegd trouwens ik (als noob) heb hier veel van geleerd thanks

Pagina:

Enkel aanvullende informatie is welkom. Geen prijzende of afkeurende reacties.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.05s