De waarde van woonplaats zal ergens in je script geset moeten worden.quote:Op zondag 12 februari 2006 21:02 schreef mooya het volgende:
Ik heb een irritant probleem met de Magic Quotes..
ik heb thuis mijn website gemaakt zonder magic_quotes. en nou zet ik hem op Internet en daar staat hij AAN.. dus al mijn invoervelden krijgen een extra slash..
ik heb het e.e.a geprobeert...
- set_magic_quotes_runtime(0);
- een htacces file aangepast
En de onderstaande code in mijn include bestand geplakt:
[ code verwijderd ]
Ik haal mijn variabele op als:
$woonplaats = addslashes(htmlspecialchars($woonplaats));
ipv:
$woonplaats = addslashes(htmlspecialchars($_POST['woonplaats']));
Als ik de 2e optie gebruik dan werkt het goed.. maar bij de 1e niet..
En ik zie het ook niet echt zitten om alles weer om te gooien.
Iemand een idee?
htmlspecialchars is een functie die invloed uitoefent op output. Deze pas je dus niet toe bij het valideren van input.quote:Op zondag 12 februari 2006 21:55 schreef beerten het volgende:
Om verder getik in je script te voorkomen doe je het in een keer goed
$woonplaats = htmlspecialchars(stripslashes($_POST['woonplaats']));
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $reportMail = 'bla@gmail.com'; $redirectPage = 'error/error.html'; if (($errno & error_reporting()) == 0) return; $err = ''; switch($errno) { case E_ERROR: $err = 'FATAL'; break; case E_WARNING: $err = 'ERROR'; break; case E_NOTICE: return; } $message = "Er is een error geconstateerd op een van de pagina's<br /><br />"; $message .= "De error gebeurde in het volgende bestand:<br />"; $message .= $errfile . "<br /><br />"; $message .= "Op lijn <b>$errline</b> deed zich de volgende error voor:<br />"; $message .= $err . ", nr. " . $errno . ": " . $errstr . "<br /><br /><br />"; $message .= "-------------------------------------------------------------<br />"; $message .= "-- <i>Dit bericht is automatisch gegenereerd door BLIK BOT</i> --"; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: BLIK Bot <blikbot@blik.nl>' . "\r\n"; mail($reportMail, "BLIK Error", $message, $headers); print '<META HTTP-EQUIV="Refresh" CONTENT="0;url=' . $redirectPage . '">'; exit(); } |
In de HTML mailtjes is dat <a href> wel weggehaald, maar is het geen link. Mijn vraag is dus of ik dat kan veranderen, dus gewoon die hele link weghalen in $errstr.quote:move_uploaded_file(/map/image.jpg) [<a href='function.move-uploaded-file'>function.move-uploaded-file</a>]: failed to open stream: No such file or directory
| 1 2 3 4 5 6 7 8 9 10 11 | $last_id = mysql_insert_id(); $imgnaam = "image_nieuws_" . $last_id . $extension; $path = "/images/nieuws"; move_uploaded_file($_FILES['inputImage']['tmp_name'], $path . "/" . $imgnaam); $query = "INSERT INTO table(field_id, field_image_naam) VALUES ('" . $last_id . "','" . $imgnaam . "')"; mysql_query($query); } else { //Error boodschap etc... } |
move_uploaded_file() geeft false terug als er iets fout gaat (zoals je in de manual kan lezenquote:Op zondag 12 februari 2006 22:13 schreef SkaterSam het volgende:
Dus hoe kan ik zien of move_uploaded geslaagd is? En als laatste vraag: kan ik een zelfde soort functie maken voor MySQL errors?
| 1 2 3 4 5 6 7 8 9 10 11 12 | $_SESSION['add_error'] .= "<li>Kon het bestand niet verplaatsen</li>"; header("Location: add.php"); exit; } else { $query = "INSERT INTO table(field_nieuws_id, field_image_naam) VALUES ('" . $last_id . "','" . $imgnaam . "')"; mysql_query($query); } |
Correct. En dat moet dus uit staan.quote:Op zondag 12 februari 2006 21:22 schreef mooya het volgende:
En register_globals is toch dat je een variabele kan ophalen zonder $_POST[] en $_GET[]?
functie:quote:Op zondag 12 februari 2006 21:55 schreef beerten het volgende:
[..]
De waarde van woonplaats zal ergens in je script geset moeten worden.
$woonplaats = $_POST['woonplaats'];
Als je dit bovenaan je script zet dan hoef je verder niets te veranderen. Staan er dan overal slashes omheen dan tik je
$woonplaats = stripslashes($_POST['woonplaats']);
Om verder getik in je script te voorkomen doe je het in een keer goed
$woonplaats = htmlspecialchars(stripslashes($_POST['woonplaats']));
| 1 2 3 | $_POST[$key] = stripslashes($postval); } |
Het beste is om de hele site aan te gaan passen naar gebruik van $_POST, $_GET, etc.quote:Op zondag 12 februari 2006 23:17 schreef mooya het volgende:
[..]
moet ik nu de hele site aanpassen, of is er een andere oplossing?
Die HTML kan in je database absoluut geen kwaad, zolang je maar consequent bent met de manier waarop je die contents outputquote:Op zondag 12 februari 2006 23:29 schreef mooya het volgende:
maar het beste is om pure html van een gebruiker op te slaan in je DB? en bij de output pas te htmlspecialcharren ?
IK vraag me nu trouwens af of dat de oplossing zal zijn. Immers wordt de mail niet verminkt of iets dergelijks. De helft van de informatie staat er simpelweg niet in.quote:Op zondag 12 februari 2006 16:49 schreef SuperRembo het volgende:
Is het misschien een oplossing om een multipart mail te sturen met een html en een plaint text versie?
Ligt aan de mailclient, maar in mijn geval (Mozilla Thunderbird) doet ie dat weldegelijkquote:Op maandag 13 februari 2006 11:20 schreef Swetsenegger het volgende:
[..]
Maken mailclients van urls in een platte tekst mails klikbare links?
Ik heb nog geen gezien die dat niet doet. Gewoon wel in http://~~ formaat, en niet alleen www.~~quote:Op maandag 13 februari 2006 11:20 schreef Swetsenegger het volgende:
Aanvullende vraag. Maken mailclients van urls in een platte tekst mails klikbare links?
Euh, wat je dus zegt is dat de klant een andere mail krijgt dan jij, terwijl jij gewoon een Cc (of Bcc) krijgt van wat er naar de klant wordt gestuurd?quote:Op maandag 13 februari 2006 11:20 schreef Swetsenegger het volgende:
[..]
IK vraag me nu trouwens af of dat de oplossing zal zijn. Immers wordt de mail niet verminkt of iets dergelijks. De helft van de informatie staat er simpelweg niet in.
Overigens zal ik me sowieso eens goed gaan verdiepen in de materie, maar vreemd is het wel
Precies.quote:Op maandag 13 februari 2006 19:25 schreef Light het volgende:
[..]
Euh, wat je dus zegt is dat de klant een andere mail krijgt dan jij, terwijl jij gewoon een Cc (of Bcc) krijgt van wat er naar de klant wordt gestuurd?
De mailheaders moeten worden afgesloten met \r\n, volgens de mailprotocollen. Servers kunnen ook alleen \n accepteren, maar da's geen onderdeel van het protocol. Dus ik zou gewoon \r\n gebruiken. Alleen weet ik zo even niet zeker of de laatste header ook met \r\n moet worden afgesloten.quote:Op maandag 13 februari 2006 19:36 schreef Swetsenegger het volgende:
Daarnaast sluit ik elke headerline met \r\n af. Nu is het een linux server, dus \n is misschien handiger? EN... last but not least, in bovenstaand topic, zag ik in ALLE voorbeelden dat ook de laatste headerline een \n heeft. Ik deed dat bij de laatste regel niet. Ik weet niet of iemand kan bevestigen dan wel ontkennen dat ook de laatste header regel een newline -moet- hebben?
Ik wist inderdaad dat tussen elke header regel een newline zit (ook een mooie manier om mailinjection af te vangen op je formuliertjes. alles met \n is een no-go)quote:Op maandag 13 februari 2006 20:46 schreef Light het volgende:
[..]
De mailheaders moeten worden afgesloten met \r\n, volgens de mailprotocollen. Servers kunnen ook alleen \n accepteren, maar da's geen onderdeel van het protocol. Dus ik zou gewoon \r\n gebruiken. Alleen weet ik zo even niet zeker of de laatste header ook met \r\n moet worden afgesloten.
| 1 2 3 4 5 6 7 8 9 | fprintf(sendmail, "To: %s\n", to); fprintf(sendmail, "Subject: %s\n", subject); if (headers != NULL) { fprintf(sendmail, "%s\n", headers); } fprintf(sendmail, "\n%s\n", message); ret = pclose(sendmail); (...) |
Ok, zoals ik het had dusquote:Op maandag 13 februari 2006 20:53 schreef JeRa het volgende:
Swetsenegger, ik heb even de source code van PHP voor je doorgespit om dat over die headers op te zoeken. Zie het volgende:
[ code verwijderd ]
Zo te zien is het dus het slimst om géén \n (of \r\n) op het einde van je headers te plaatsen. Bron.
Het gaat bij meerdere klanten fout. Van de 55 43 orders ofzo welke nu geplaatst zijn, is het bij een stuk of 5 4 klanten fout gegaan. Dat is 10% en vind ik redelijk veel eigenlijk. Het lijkt me sterk dat 10% van de gemiddelde surfers een brakke mailclient gebruiken eigenlijk.quote:Op maandag 13 februari 2006 21:09 schreef JeRa het volgende:
Maar welke mailclient gebruikt de persoon waarbij het fout gaat? Heb je al geprobeerd die mailclient te gebruiken en daarmee dat mailtje te ontvangen? Of heb ik ergens overheen gelezen?
quote:Op maandag 13 februari 2006 21:14 schreef morpheus_at_work het volgende:
[ code verwijderd ]
hoe kan ik er voor zorgen dat spaties ook goed gekeurd worden
| 1 |
Jouw moest ik net hebben. ik wilde even op de web hobbit kijken of er misschien header informatie te vinden was, maar die is offlinequote:
Je had niet zoiets van 'god wat zou er gebeuren als ik gewoon een spatie bij het patroon zet' ?quote:Op maandag 13 februari 2006 21:20 schreef morpheus_at_work het volgende:
[..]is dat alles , jemig 3x dood aangestaard
nee , dat nietquote:Op maandag 13 februari 2006 21:24 schreef Swetsenegger het volgende:
[..]
Je had niet zoiets van 'god wat zou er gebeuren als ik gewoon een spatie bij het patroon zet' ?
klopt. zit me nog te bedenken wat ik met dat ding moet doen. staat niet bar veel nuttigs op namelijk. 3 threadsquote:Op maandag 13 februari 2006 21:19 schreef Swetsenegger het volgende:
[..]
Jouw moest ik net hebben. ik wilde even op de web hobbit kijken of er misschien header informatie te vinden was, maar die is offline
Meer naamsbekendheid aan geven, zorgen voor veel threads en dan google addsquote:Op maandag 13 februari 2006 21:32 schreef Roöaän het volgende:
[..]
klopt. zit me nog te bedenken wat ik met dat ding moet doen. staat niet bar veel nuttigs op namelijk. 3 threads
neuh, ik gebruik de laatste tijd voornamelijk phpmailer. Heb ik weinig problemen mee.quote:Op maandag 13 februari 2006 21:37 schreef Swetsenegger het volgende:
[..]
Meer naamsbekendheid aan geven, zorgen voor veel threads en dan google adds
Maar info over mail headers zal ik er dus niet vinden
| 1 2 | <meta http-equiv="cache-control" content="no-cache"> |
Het gaat in mijn geval ook niet fout met verzendenquote:Op maandag 13 februari 2006 21:40 schreef Roöaän het volgende:
[..]
neuh, ik gebruik de laatste tijd voornamelijk phpmailer. Heb ik weinig problemen mee.
quote:Op maandag 13 februari 2006 21:56 schreef ikke_ook het volgende:
Ik heb niet echt een php vraag maar ik verwacht hier wel een antwoord te krijgen, en een beter topic kan ik er ook niet voor vinden
Hoe kan ik ervoor zorgen dat als ik een pagina laadt, hij niet een plaatje uit zn cache haalt maar echt het plaatje wat op de server staat pakt?
ik heb dit allebei geprobeerd:
[ code verwijderd ]
Maar t helpt niet... hij blijft het plaatje uit zn cache halen en wachten tot ik op f5 druk..
| 1 |
Nee, ik zat ook meer aan een html oplossing te denken.. het probleem is denk ik dat ik een nieuw plaatje maak in dezelfde directory met dezelfde naam, alleen ziet hij er iets anders uit. Zowel IE als FF pakt dus t oude plaatje ipv de nieuwe...quote:Op maandag 13 februari 2006 22:03 schreef Swetsenegger het volgende:
[..]
[ code verwijderd ]
Helpt dit misschien?
Dan maak je er toch met een timestamp een compleet andere naam vanquote:Op maandag 13 februari 2006 22:08 schreef ikke_ook het volgende:
[..]
Nee, ik zat ook meer aan een html oplossing te denken.. het probleem is denk ik dat ik een nieuw plaatje maak in dezelfde directory met dezelfde naam, alleen ziet hij er iets anders uit. Zowel IE als FF pakt dus t oude plaatje ipv de nieuwe...
Slaat deze meta tag niet alleen op het html bestand zelf?quote:Op maandag 13 februari 2006 21:56 schreef ikke_ook het volgende:
Ik heb niet echt een php vraag maar ik verwacht hier wel een antwoord te krijgen, en een beter topic kan ik er ook niet voor vinden
Hoe kan ik ervoor zorgen dat als ik een pagina laadt, hij niet een plaatje uit zn cache haalt maar echt het plaatje wat op de server staat pakt?
ik heb dit allebei geprobeerd:
[ code verwijderd ]
Maar t helpt niet... hij blijft het plaatje uit zn cache halen en wachten tot ik op f5 druk..
En hoe stuur ik zo'n header mee met een plaatje?quote:Op dinsdag 14 februari 2006 00:26 schreef Roöaän het volgende:
[..]
Slaat deze meta tag niet alleen op het html bestand zelf?
Ik denk dat je (zoals eerder genoemd) inderdaad headers met je image mee moet sturen wil je de caching daarvan voorkomen.
Genereer je het plaatje d.m.v. PHP? Want dan moet je header() hebben.quote:Op dinsdag 14 februari 2006 08:24 schreef ikke_ook het volgende:
[..]
En hoe stuur ik zo'n header mee met een plaatje?
Nee, kijk even in de PHP manual wat htmlentities() doet! Het is een functie waarmee je de output zo kunt formatteren dat er geen tekens in staan die je HTML kunnen verknoeien.quote:Op dinsdag 14 februari 2006 10:32 schreef Desdinova het volgende:
van de week even wat gelezen.. en volgens mij kwam het erop neer dat ik bij elke $_GET, $_POST en $_REQUEST eerst htmlentities moet toepassen.
zo van $test = htmlentities($_REQUEST['test']);
klopt dat?
Heb je nou gekeken wat htmlentities() doet?quote:Op dinsdag 14 februari 2006 10:47 schreef Desdinova het volgende:
hmm okee. dus dat is alleen ter preventie van het uitvoeren van HTML codes als ik het goed begrijp.
maar ik heb bijv een query = "SELECT * FROM Test WHERE ID = '".$_GET['ID']."'";
als ze $_GET['ID'] dan een waarde als "1; Delete from test where 1=1" meegeven, heb ik toch een serieus probleem?
Je query is wel veilig, maar lees mijn post nog eens (zie de link die ik je net gaf). Daarin beschrijf ik hoe je het best te werk kunt gaan, zó dat het ook op andere systemen met verschillende versies en configuraties van PHP goed werkt. Kortweg; GPC strippen, doen wat je moet doen met je variabelen, en afhankelijk van de output (HTML/SQL) htmlentities() of addslashes() gebruiken.quote:Op dinsdag 14 februari 2006 11:39 schreef Desdinova het volgende:
ik heb het niet nog n keer gechecked, maar ik weet dat het < in < oid vervangt, zodat het weergegeven wordt als <, en niet een tag opent.
addslashes is niet wat ik zoek, want die staat standaard aan. get_magic_quotes ofzo.
maar is mijn query dan veilig?
| 1 2 3 | mysql_query("UPDATE `nieuws` SET `ip` = '{$ip}', `naam` = '{$naam}', `titel` = '{$titel}', `bericht` = '{$bericht}' WHERE `id` = '{$id}' LIMIT 1"); ?> |
probeer eensquote:Op dinsdag 14 februari 2006 19:26 schreef HuHu het volgende:
ID is een INT.
De rest is VARCHAR.
Bericht is een TEXT.
Als ik handmatig de UPDATE query uitvoer, dan gaat 't wel goed. Alleen deze php code wil niet. Verder is er nog een veld datum, maar die moet niet worden ge-update.
| 1 |
| 1 2 3 | mysql_query="UPDATE nieuws SET ip = '".$ip."', naam = '".$naam."', titel = '".$titel."', bericht = '".$bericht."' WHERE id = ".$id." LIMIT 1"; ?> |
Dat is hetzelfde als de oorspronkelijke query behalve de ID-kolom, maar cast MySQL die niet automagisch?quote:
Ik heb 'm al.quote:
En dat doe je dus al voor dat je 'm op een forum postquote:
vars buiten quotes, hinderlijke backticks, etc.quote:Op dinsdag 14 februari 2006 19:32 schreef JeRa het volgende:
[..]
Dat is hetzelfde als de oorspronkelijke query behalve de ID-kolom, maar cast MySQL die niet automagisch?
swets hoe is t met je mailprobleem?quote:Op dinsdag 14 februari 2006 20:41 schreef Swetsenegger het volgende:
[..]
vars buiten quotes, hinderlijke backticks, etc.
problematischquote:Op dinsdag 14 februari 2006 20:42 schreef Desdinova het volgende:
[..]
swets hoe is t met je mailprobleem?
Jouw probleem kun je denk ik beter oplossen door de RewriteEngine van Apache te gebruikenquote:Op woensdag 15 februari 2006 11:32 schreef Darkomen het volgende:
Niemand iets te zeggen over het .htaccess probleem wat ik heb?
Dat had in inderdaad ook gewild, ik heb mijn host gemaild, nog geen antwoord terug.quote:Op woensdag 15 februari 2006 11:33 schreef JeRa het volgende:
[..]
Jouw probleem kun je denk ik beter oplossen door de RewriteEngine van Apache te gebruikendaar zijn ook genoeg voorbeelden van te vinden, ook specifiek voor jouw idee.
| 1 |
| 1 2 3 4 5 | $order = $_GET['order']; $sort_result = preg_match('/(pcnaam|gebouw|lokatie|leerkracht)/', $sort); $order_result = preg_match('/(DESC|ASC)/',$order); if($sort_result == 1 && $order_result == 1) |
| 1 |
Het kan met een regexp, maar ik zou het met een switch of met in_array doen.quote:Op donderdag 16 februari 2006 11:55 schreef mschol het volgende:
heb klein vraagje..
[...]
moet ik dit soms met een regexp_match doen?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | case 'apple': case 'banana': case 'cherry': echo 'yummy!'; break; } if (in_array($fruit, array('apple', 'banana', 'cherry')) { echo 'yummy!'; } if (preg_match('/^(apple|banana|cherry)$/', $fruit) { echo 'yummy!'; } if ($fruit == 'apple' or $fruit == 'cherry' or $fruit == 'cherry') { echo 'yummy!'; } |
| 1 2 3 4 5 6 7 8 9 10 11 12 | $querylastpost = mysql_query("SELECT * FROM forum_topics WHERE id = '$topicid'"); while($objectlastpost = mysql_fetch_object($querylastpost)){ $querylastpostname = mysql_query("SELECT * FROM users WHERE userid = '$objectlastpost->lastpost_user'"); while($objectlastpostname = mysql_fetch_object($querylastpostname)){ $lastpost_user = $objectlastpostname->username; } $lastpost_name = $objectlastpostname->username; $lastpost_date = date("d/m/Y H:i",$objectlastpost->lastpost_date); return "<font size='1'>$lastpost_date <a href='/profiel/?id=$objectlastpost->lastpost_user'>$lastpost_user</a></font>"; } } |
Dank voor de bezorgdheid, maar dat snap ikquote:Op donderdag 16 februari 2006 17:56 schreef JeRa het volgende:
@RiderXXX
Eén mogelijkheid is dat je eerst alle data inleest, en ze vervolgens met een while()- of for()-loopje afloopt. Op die manier kun je makkelijk checken of er een volgende item is.
Je code is wel erg ranzig wat queries betreft. Als al je queries zo in elkaar zitten raad ik je _ten zeerste_ aan om te leren JOINen met SQL
nee helaas kan dat ook niet want in de text zitten ook newlines verwerktquote:Op donderdag 16 februari 2006 17:52 schreef JeRa het volgende:
@Chandler
Is er geen simpelere mogelijkheid? Staan de INSERTs allemaal achter elkaar? Anders zou je bijvoorbeeld op newlines kunnen splitten
Geen andere truukjes mogelijk? Zoals het splitten op ')? (einde van een INSERT met een tekst)quote:Op donderdag 16 februari 2006 19:29 schreef Chandler het volgende:
[..]
nee helaas kan dat ook niet want in de text zitten ook newlines verwerkt
Als je je bestand in een variabele hebt gestopt, zeg $data, dan kun je dit doen:quote:Op donderdag 16 februari 2006 19:44 schreef Chandler het volgende:
JeRa: Ja ik probeerde eerst dus te exploden op \r\n maar helaas dat werkt nieten een ander manier kan ik zo niet te voorschijn toveren.
hoe bedoelde je dat met "INSERT INTO" etc?
Ik mag hopen dat je niet op een permanente oplossing aan het doelen bent, die vaker ingezet gaat wordenquote:Op donderdag 16 februari 2006 19:50 schreef Chandler het volgende:
oef, doelde je daarop! hmmm dat moet natuurlijk wel lukken maar stel er staat insert into in de 'query' text?en dan?
Dus je hebt de INSERTs vantevoren wél los? Waarom dan niet een array van strings, serialize() erover en dán gzcompress?quote:Op donderdag 16 februari 2006 20:45 schreef Chandler het volgende:
Het gaat zo, alle inserts worden in 1 string gehouden daarna wordt deze string ingepakt met gzcompress..
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |