Vraag & Antwoord

Webprogrammeren & scripting

[PHP] array writen

5 antwoorden
  • Hallo, Ik ben bezig om een gastenboek achtig reactie systeem maken, maar het lukt niet erg, ik wil de gegevens opslaan in een array, en dan die array in een .txt bestand opslaan, zodat ik die later kan uitlezen. dit is mijn code: [code:1:507d188634] $formname = $_REQUEST['name'] ; $formemail = $_REQUEST['email'] ; $formmessage = $_REQUEST['message'] ; if ( ( !$formemail ) || ( strlen($_POST['formemail']) > 200 ) || ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $formemail) ) ) { die("Verkeerd e-mail adres ingevuld"); } else { $file = fopen("reacties.txt", "a"); $content[name] = $formname; $content[email] = $formemail; $content[message] = $formmessage; $contenttowrite = print_r($content); fwrite($file, "\r\n$contenttowrite"); fclose($file); }[/code:1:507d188634] wat doe ik verkeerd.?? als ik in het txt bestand kijk staat er 1. Alvast Hartelijk dank.[/code]
  • $contenttowrite is een print_r. Zoals je [url=http://php.net/manual/en/function.print-r.php]hier in de documentatie kunt lezen[/url] is de parameter voor return een boolean true of false. Onder het kopje return values staat: [quote:f4952bf93b]When the return parameter is TRUE, this function will return a string. Otherwise, the return value is TRUE. [/quote:f4952bf93b]. Aangezien je de return parameter niet hebt gespecificeerd, resulteert dat dus in een 1, wat simpelweg aangeeft dat het printen [i:f4952bf93b]naar die variabele[/i:f4952bf93b] gelukt is. Oplossing is in dit geval om de return value wel te specificeren. Overigens zou ik je script nog wel even flink onder handen nemen. Je gebruikt $_REQUEST terwijl dat voor zowel GET, POST en COOKIE kan gelden. Mensen kunnen daardoor een hoop ongein uithalen. Houdt het gewoon bij $_POST zou ik zeggen. Verder kan een [url=http://www.php.net/manual/en/function.addslashes.php]addslashes[/url] geen kwaad om te voorkomen dat zaken in het honderd lopen.
  • Je schrijft de waarde die [url=http://nl.php.net/manual/en/function.print-r.php]print_r[/url] oplevert naar het bestand. Standaard is dit TRUE (gerepresenteerd als 1). Je kan aan print_r true meegeven als tweede parameter, dan levert het de uitvoer van print_r op, dit wordt dan: [code:1:9137463ad5]$contenttowrite = print_r($content, true);[/code:1:9137463ad5] Overigens denk ik niet dat het handig is om de uitvoer van print_r te gebruiken, het lijkt me erg lastig om de uitvoer weer in te lezen in een array. Nog even wat over je code. Hoewel dit werkt: [code:1:9137463ad5]$content[name] = $formname; $content[email] = $formemail; $content[message] = $formmessage;[/code:1:9137463ad5] moet je eigenlijk aanhalingstekens om de keys zetten: [code:1:9137463ad5]$content['name'] = $formname; $content['email'] = $formemail; $content['message'] = $formmessage;[/code:1:9137463ad5] Ook zou ik je willen aanraden om [url=http://nl.php.net/manual/en/function.htmlspecialchars.php]htmlspecialchars[/url] te gebruiken bij op de "name" en "message" om te voorkomen dat iemand HTML kan invoeren en je risico loopt op [url=http://nl.wikipedia.org/wiki/XSS]Cross-site scripting[/url]. [edit]Ger was me voor.[/edit]
  • Ik heb jullie advies opgevold en het write nu een goede array maar ik had inderdaad nog niet over het inlezen nagedacht. wat is dan een handigere manier om het te writen? MVG,, [code:1:fa623fbbea] $formname = $_POST['name'] ; $formemail = $_POST['email'] ; $formmessage = $_POST['message'] ; if ( ( !$formemail ) || ( strlen($_POST['formemail']) > 200 ) || ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $formemail) ) ) { die("Verkeerd e-mail adres ingevuld"); } else { $file = fopen("reacties.txt", "a"); $content['name'] = addslashes(htmlspecialchars($formname)); $content['email'] = $formemail; $content['message'] = addslashes(htmlspecialchars($formmessage)); $contenttowrite = print_r($content, true); fwrite($file, "\r\n$contenttowrite"); fclose($file); }[/code:1:fa623fbbea]
  • Of is het misschien handiger om het in een database te zetten? MVG,,

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.