1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $bla = "bla"; mysql_query ("INSERT INTO fotos ( id, foto, occasion_id ) VALUES ( '', '{$bla}', $occasion_id )"); ?> |
1 2 3 4 5 | $sql = sprintf("INSERT INTO fotos (id,foto,occasion_id) VALUES (NULL,'%s',%d)",$bla,$occasion_id); mysql_query($sql); ?> |
En als het veld ID als eigenschappen "not null" en "auto increment" heeft dan moet je vooral niet proberen dat ding op null te zetten. Dan beter nog dat hele ID veld niet vullen, dan weet Mysql ook dat het zelf moet.quote:Op dinsdag 2 mei 2006 20:10 schreef smesjz het volgende:
Het gebruik van de sprintf() familie voorkomt dit soort problemen:
[ code verwijderd ]
Je moet er misschien even aan wennen, maar met printf() kan je nog veel meer dingen doen.
Ook als je geen C gewend bent, kan het zeker voor wat betere leesbare code zorgen.
Hiervoor zijn nou prepared statements bedacht, prima ondersteund door PDO en de standaard MySQLi-extensie in PHPquote:Op dinsdag 2 mei 2006 20:10 schreef smesjz het volgende:
Het gebruik van de sprintf() familie voorkomt dit soort problemen:
[ code verwijderd ]
Je moet er misschien even aan wennen, maar met printf() kan je nog veel meer dingen doen.
Ook als je geen C gewend bent, kan het zeker voor wat betere leesbare code zorgen.
Prepared statements zijn leuk als je veel terugkerende queries hebt, anders niet.quote:Op dinsdag 2 mei 2006 20:42 schreef JeRa het volgende:
[..]
Hiervoor zijn nou prepared statements bedacht, prima ondersteund door PDO en de standaard MySQLi-extensie in PHPniet alleen doen die wat jij beschrijft, maar ze zorgen ook voor een escaping gebaseerd op de juiste character set en kunnen een query vantevoren parsen zodat je dezelfde query vaak kunt uitvoeren zonder telkens de parse-overhead te hebben
Is dat niet bij bijna elke werkgever zo? Laatst een bedrijf gezien waar PHP-programmeurs (en alleen PHP dus!) op HBO-niveau tussen de 35 en 40 euro per uur verdienenquote:Op dinsdag 2 mei 2006 21:02 schreef Swetsenegger het volgende:
Ik ben zowaar een werkgever tegen gekomen welke een afgeronde HBO opleiding belangrijker vind dan aantoonbare ervaring
Nee, een werkgever zou pas naar diploma's moeten kijken wanneer er geen aantoonbaar relevante werkervaring is.quote:Op dinsdag 2 mei 2006 21:08 schreef JeRa het volgende:
[..]
Is dat niet bij bijna elke werkgever zo? Laatst een bedrijf gezien waar PHP-programmeurs (en alleen PHP dus!) op HBO-niveau tussen de 35 en 40 euro per uur verdienenmaar reken er maar niet op dat je daar komt te werken zonder HBO-diploma.
Je mag hopen dat een internationaal opererende organisatie mensen op posities neerzet vanwege de kwaliteiten van die mensen. Maar bedrijven kunnen zich natuurlijk ook wel eens vergissen.quote:Op dinsdag 2 mei 2006 21:16 schreef Swetsenegger het volgende:
Je mag aannemen dat een internationaal opererende organisatie in een snelle competitieve markt mensen niet op die positie zet voor hun zweet voetenMet andere woorden, ik ben competent... ondanks dat mijn hoogst behaalde opleiding MBO is.
Ja, dat wil ik ook wel wetenquote:-edit- waar was dat bedrijf van die PHP'ers overigens
Ik heb nu 17 jaar werkervaring en incompetente mensen houden het in de regel niet langer dan 1, max 2 jaar vol op hun positie.quote:Op dinsdag 2 mei 2006 21:54 schreef Light het volgende:
[..]
Je mag hopen dat een internationaal opererende organisatie mensen op posities neerzet vanwege de kwaliteiten van die mensen. Maar bedrijven kunnen zich natuurlijk ook wel eens vergissen.
Heb je HBOquote:Ja, dat wil ik ook wel weten
Ervaring natuurlijk. Maar m'n punt was dat sommige werkgevers dat niet zo zwaar laten meetellenquote:
Ben aan het zoeken, kan het zo 1-2-3 niet vinden. Ik post het wel hier zodra ik hun website weer hebquote:-edit- waar was dat bedrijf van die PHP'ers overigens
Zit wat in.quote:Op dinsdag 2 mei 2006 22:00 schreef Swetsenegger het volgende:
[..]
Ik heb nu 17 jaar werkervaring en incompetente mensen houden het in de regel niet langer dan 1, max 2 jaar vol op hun positie.
Nee, wel ZCEquote:Heb je HBO
1 2 3 4 5 6 7 8 | ( [To Download.txt] => file [aaa] => dir [bla] => dir [blaat] => dir [hihi] => dir ) |
1 2 3 4 5 6 7 8 | ( [aaa] => dir [bla] => dir [blaat] => dir [hihi] => dir [To Download.txt] => file ) |
1 2 3 4 5 6 7 8 | ( [hihi] => dir [blaat] => dir [bla] => dir [aaa] => dir [To Download.txt] => file ) |
1 |
dank je voor je snelle reactie...quote:Op woensdag 3 mei 2006 01:56 schreef _dirkjan_ het volgende:
<?
echo "<a href=\"http://dit is de link.com\"><img src=\"plaatje.jpg\"></a>";
?>
Maar snap je het doel van php wel?
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 30 31 | mysql_query ("INSERT INTO occasions ( id, merk, type, foto, bouwjaar, kilometerstand, kleur, brandstof, specificaties, vraagprijs ) VALUES ( '', ".$_POST['merk'].", ".$_POST['type'].", '$uploadname', ".$_POST['bouwjaar'].", ".$_POST['kilometerstand'].", ".$_POST['kleur'].", ".$_POST['brandstof'].", '$specificaties', ".$_POST['vraagprijs']." )") or die( mysql_error() ); ?> |
Misschien wel, maar dan moet ik vrij veel code ombouwen en het op deze manier sorteren lijkt me nou geen onmogelijke opgave, of vergis ik me ?quote:Op woensdag 3 mei 2006 00:54 schreef JeRa het volgende:
@MeScott
Is het niet mogelijk ze eerst in aparte arrays te stoppen, ze onafhankelijk van elkaar te sorteren en weer bij elkaar te plakken?
Je kunt met usort een sorteerfunctie verzinnen, maar dan moet je array alsnog verbouwd worden:quote:Op woensdag 3 mei 2006 10:01 schreef MeScott het volgende:
[..]
Misschien wel, maar dan moet ik vrij veel code ombouwen en het op deze manier sorteren lijkt me nou geen onmogelijke opgave, of vergis ik me ?
edit:
Heb het nu toch maar ff opgelost door twee aparte arrays, mocht er iemand zijn die een oplossing heeft voor het sorteerprobleem dan sta ik daar ook nog voor open
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $files=array(); $files[]=array("blat.txt","file"); $files[]=array("amb.php","file"); $files[]=array("corn.sys","file"); $files[]=array("abacus","dir"); $files[]=array("betacaroteen","dir"); usort($files,"cmpfile"); function cmpfile($a, $b) { if ($a[1]=="dir" && $b[1]!="dir") return -1; if ($a[1]==$b[1]) return (strcmp($a[0],$b[0])); return 1; } var_dump($files); ?> |
1 2 3 4 5 6 7 8 9 10 | function sortfiles($files) { foreach($files as $key => $value) { ${$value}[$key]=$value; } ksort($file); ksort($dir); return array_merge($dir,$file); } ?> |
quote:Op woensdag 3 mei 2006 00:44 schreef MeScott het volgende:
Ik heb een array:
[ code verwijderd ]
Nu wil ik dus eerst alle mappen hebben, en daarna alle bestanden, beide op alfabetische volgorde sorteren. Dit zou er dus uit moeten komen:
[ code verwijderd ]
Ik heb het met asort al geprobeerd, maar dan krijg ik zo'n array:
[ code verwijderd ]
Iemand een idee hoe het wel moet ?
Er moeten overal quotjes omheen. Dus:quote:Op woensdag 3 mei 2006 02:41 schreef BaggerUser het volgende:
kut he twerkt dus toch niet...
[ code verwijderd ]
het hangt af van de invoer maar het werkt vaak niet
vul maar eens wat in op
http://80.61.232.209/bruins/
zolang je invult wat er voor staat werkt het, ongelofelijk maf...
dus bij specificaties, specificaties invullen , bij benzine, benzine
echt raar ?
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 30 31 | mysql_query ("INSERT INTO occasions ( id, merk, type, foto, bouwjaar, kilometerstand, kleur, brandstof, specificaties, vraagprijs ) VALUES ( '', '".$_POST['merk']."', '".$_POST['type']."', '$uploadname', '".$_POST['bouwjaar']."', '".$_POST['kilometerstand']."', '".$_POST['kleur']."', '".$_POST['brandstof']."', '$specificaties', '".$_POST['vraagprijs']."' )") or die( mysql_error() ); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $from = trim(urldecode($_POST["mail"])); if(!preg_match("/^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$/", $from)) { $error .= "Het mailadres is onjuist.<br />\n"; } if (eregi("\r",$from) || eregi("\n",$from) || eregi("0x0D",$from) || eregi("%0D",$from) || eregi("0x0A",$from) || eregi("%0A",$from)) { header("Location: http://www.watbenjedan.nl"); } ?> |
Werkt inderdaad perfect, dank jequote:Op woensdag 3 mei 2006 11:45 schreef freiss het volgende:
[..]
[ code verwijderd ]
Deze werkt in dit geval iig goed.
jeej het werktquote:Op woensdag 3 mei 2006 12:00 schreef HuHu het volgende:
[..]
Er moeten overal quotjes omheen. Dus:
[ code verwijderd ]
Bij uploadname en specificaties doe je het wel goed, maar het moet bij al die andere ook.
Op http://nl3.php.net/mail staan goede voorbeelden van betere code die mail injectie tegen gaan. Die van mfp (28-Apr-2006 05:55) is wel ok, hoewel erg uitgebreid. Misschien is die van derernst at gmx dot ch (17-Feb-2006 05:43) ook al voldoende.quote:Op woensdag 3 mei 2006 12:03 schreef HuHu het volgende:
Een vraagje, als ik mail-injection wil voorkomen, is dit dan genoeg?
[ code verwijderd ]
Om integers niet, en ik neem aan dat bouwjaar, kilometerstand en prijs ints zijn?quote:Op woensdag 3 mei 2006 12:00 schreef HuHu het volgende:
[..]
Er moeten overal quotjes omheen. Dus:
[ code verwijderd ]
Bij uploadname en specificaties doe je het wel goed, maar het moet bij al die andere ook.
Wees creatief. Als je het de gebruiker moeilijker wilt maken een tekst in een plaatje om over te typen, maar je kunt creatievere zaken verzinnen die spammers niet zo snel door hebben of gewoon teveel moeite vinden om te omzeilen. Denk hierbij bijvoorbeeld aan time-based methoden, zoals op basis van de datum en tijd de form velden dynamische namen geven.quote:Op dinsdag 2 mei 2006 14:26 schreef -calimero- het volgende:
Ik heb (weer) een vraagje. Een tijdje geleden hebben jullie mij geholpen met een mailformulier voor een website. Nu staat deze al een tijdje online, maar er komt steeds meer spam op binnen te komen.
Is er een mogelijkheid om dat te weren op een of andere manier?
Het gaat om deze code:
[ code verwijderd ]
Hier te vinden: http://www.zwembaddezwoer.nl/contact.htm
Bij integers niet, dat klopt. Maar je weet niet wat mensen invullen in de vakjes.quote:Op woensdag 3 mei 2006 23:20 schreef CraZaay het volgende:
[..]
Om integers niet, en ik neem aan dat bouwjaar, kilometerstand en prijs ints zijn?
Dus eigenlijk moeten we zeggen dat user input controlle noodzakelijk isquote:Op donderdag 4 mei 2006 09:13 schreef HuHu het volgende:
[..]
Bij integers niet, dat klopt. Maar je weet niet wat mensen invullen in de vakjes.
Bouwjaar: in 1985
Kilometerstand: 120000 kilometer
Prijs: 1200 euro
Als mensen dat invullen moet je het wel quoten. Of je moet alle letters en spaties eruit strippen. Maar dat gebeurd niet, aangezien hij rechtstreeks de POST-data in de query stopt.
Dat zou wel handig zijn jaquote:Op donderdag 4 mei 2006 09:14 schreef Swetsenegger het volgende:
[..]
Dus eigenlijk moeten we zeggen dat user input controlle noodzakelijk is
1 |
Wat Swetsenegger zegt, dat moet je gewoon afvangen natuurlijk. Het is per definitie ranzig als je dergelijke toevoegingen opneemt in je database (bijvoorbeeld omdat het niet meer te vergeljken is). Met is_numeric() kom je een heel endquote:Op donderdag 4 mei 2006 09:13 schreef HuHu het volgende:
[..]
Bij integers niet, dat klopt. Maar je weet niet wat mensen invullen in de vakjes.
Bouwjaar: in 1985
Kilometerstand: 120000 kilometer
Prijs: 1200 euro
Als mensen dat invullen moet je het wel quoten. Of je moet alle letters en spaties eruit strippen. Maar dat gebeurd niet, aangezien hij rechtstreeks de POST-data in de query stopt.
Hey, het levensmotto van een gemiddelde programmeur!quote:Op donderdag 4 mei 2006 13:14 schreef BaggerUser het volgende:
nu ik net weer wakker ben en er weer fris tegenaan kan zie ik dat het nergens op lijkt![]()
1 |
Ja, door het in variabelen te stoppen. Die worden namelijk in het werkgeheugen opgeslagen. Verder blijf je wel beperkt tot de geheugenlimiet die PHP je oplegt.quote:Op vrijdag 5 mei 2006 22:00 schreef wipes66 het volgende:
Bestaat er eigenlijk in php een mogelijkheid om iets naar het werkgeheugen te schrijven? (bv om te cachen)
ik denk dat ie echt bewaren bedoeld, want variabelen zijn weg zodra de pagina geladen is. Maar ik weet niet precies wat je met werkgeheugen bedoeld, maar cachen kan wel natuurlijk, gewoon een scriptje schrijven.quote:Op vrijdag 5 mei 2006 22:13 schreef JeRa het volgende:
[..]
Ja, door het in variabelen te stoppen. Die worden namelijk in het werkgeheugen opgeslagen. Verder blijf je wel beperkt tot de geheugenlimiet die PHP je oplegt.
Ja maar al die variabelen zijn weg zodra je script weer opnieuwe begint. Of valt daar wat aan te doen?quote:Op vrijdag 5 mei 2006 22:13 schreef JeRa het volgende:
[..]
Ja, door het in variabelen te stoppen. Die worden namelijk in het werkgeheugen opgeslagen. Verder blijf je wel beperkt tot de geheugenlimiet die PHP je oplegt.
Ja meestal wordt er gecached door iets op te slaan in een bestandje, maar ik vroeg me af of het ook via werkgeheugen kan.quote:Op vrijdag 5 mei 2006 22:15 schreef _dirkjan_ het volgende:
[..]
ik denk dat ie echt bewaren bedoeld, want variabelen zijn weg zodra de pagina geladen is. Maar ik weet niet precies wat je met werkgeheugen bedoeld, maar cachen kan wel natuurlijk, gewoon een scriptje schrijven.
Hoe bedoel je dit? Als de user de pagina ververst of als het script de pagina opnieuw aanroept, dat dan je variabelen blijven bestaan? Dit kan door middel van sessions. De variabelen blijven bestaan, zolang de client verbinding houdt met de server.quote:Op vrijdag 5 mei 2006 22:19 schreef wipes66 het volgende:
[..]
Ja maar al die variabelen zijn weg zodra je script weer opnieuwe begint. Of valt daar wat aan te doen?
Sessions worden per user opgeslagen als bestand, dus dat is niet wat ik zoek.quote:Op vrijdag 5 mei 2006 22:58 schreef beerten het volgende:
Of begrijp ik je verkeerd?
Geen probleem. Alleen schrijven en lezen van het werkgeheugen gaat natuurlijk veel sneller.quote:Op zaterdag 6 mei 2006 01:12 schreef fokME2 het volgende:
Maar wat is het probleem van een file openen dan..?
Je moet niet zo geforceerd naar werkgeheugen kijkenquote:Op zaterdag 6 mei 2006 01:30 schreef wipes66 het volgende:
[..]
Geen probleem. Alleen schrijven en lezen van het werkgeheugen gaat natuurlijk veel sneller.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $vars = $HTTP_GET_VARS; // indien variable "upper" aanwezig is deze verwijderen uit de array if(array_key_exists("upper", $vars)) { print "Upper = " . $vars['upper'] . "<br>"; unset($vars['upper']); } // Hier het stukkie code om de variabelen in een string te zetten // De get-variabelen worden voor een link in // de variabele $pad_eind gestopt // ????????? //Een vereenvoudige weergave van de link print "<a href=\"http://www.domain.com/page.php?" . $pad_eind . "\">link</a>"; ?> |
Eerst even wat anders, waarom gebruik je niet de superglobal $_GET ?quote:Op zondag 7 mei 2006 22:10 schreef beerten het volgende:
Ik wil een variabele verwijderen uit de array HTTP_GET_VARS.
Dit had ik me al bedacht, maar ik kreeg het niet werkend.quote:Op maandag 8 mei 2006 09:15 schreef CraZaay het volgende:
[..]
Door de array loopen en steeds '&key=value' toevoegen aan een string?
Die kende ik nog niet, dank en hulde. Alweer iets geleerd.quote:Op maandag 8 mei 2006 09:19 schreef Light het volgende:
[..]
Eerst even wat anders, waarom gebruik je niet de superglobal $_GET ?
1 2 3 4 5 6 7 8 9 10 11 12 13 | if(array_key_exists("upper", $_GET)) { //print "Upper = " . $_GET['upper'] . "<br>"; unset($_GET['upper']); } foreach($_GET AS $key => $value) { //print $key . " - " . $value . "<br>"; $pad_eind .= "&". $key . "=". $value; } print $pad_eind; |
Thx, dat is eigenlijk precies wat ik zochtquote:Op maandag 8 mei 2006 23:46 schreef Roönaän het volgende:
Doet FormHandler dat niet?
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 30 31 32 33 34 35 36 37 38 39 40 41 42 | function upload_file($inputname, $destination) { // Als naam opgegeven en niet leeg is if (isset($_FILES[$inputname]['name']) && !empty($_FILES[$inputname]['name'])) { // Kijk of naam al bestaat if (file_exists($destination."/".$_FILES[$inputname]['name'])) { return "Fout: bestand ".$_FILES[$inputname]['name']." bestaat al."; } else { // Kijken of bestand is geupload if (is_uploaded_file($_FILES[$inputname]['tmp_name'])) { // Verplaats bestand van tmp naar doel if (move_uploaded_file($_FILES[$inputname]['tmp_name'], $destination."/".$_FILES[$inputname]['name'])) { //return "Afbeelding ".$_FILES[$inputname]['name']." is geupload."; return ''; } else { return "Fout: Bestand kon niet worden verplaatst naar opgegeven doel."; } } else { echo "Fout: "; switch($_FILES[$inputname]['error']) { case 0: //no error; possible file attack! print_r($_FILES); die(); return " Er was een probleem met het uploaden van het bestand."; break; case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini default: //a default error, just in case! return "Er was een probleem opgetreden tijdens het uploaden."; break; } } } } else { return "Klik eerst op \'Browse\' om een afbeelding op te geven!"; } } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $msg = upload_file('imginput', $_GET['path']); if ($msg != '') echo "alert('".$msg."');\n"; //print_r($_FILES); } ?> |
1 2 3 4 5 | if (!file_exists($_FILES[$inputname]['tmp_name'])) { die('Bestand '.$_FILES[$inputname]['tmp_name'].' bestaat niet.'); } ?> |
1 |
Nee, en het lijkt me dat dit ook jouw probleem is. Je voert niet één of andere stripslashes() routine uit op je globale variabelen?quote:Op dinsdag 9 mei 2006 12:33 schreef wipes66 het volgende:
Het vreemd is dat er geen slashes in staan, hoort dit?
Yes en dat was ook het probleem!quote:Op dinsdag 9 mei 2006 13:06 schreef JeRa het volgende:
[..]
Nee, en het lijkt me dat dit ook jouw probleem is. Je voert niet één of andere stripslashes() routine uit op je globale variabelen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | set_magic_quotes_runtime(0); if(get_magic_quotes_gpc() || ini_get('magic_quotes_sybase')) { $_GET = magic_quotes_strip($_GET); $_POST = magic_quotes_strip($_POST); $_COOKIE = magic_quotes_strip($_COOKIE); $_REQUEST = array_merge($_GET, $_POST, $_COOKIE); $_FILES = magic_quotes_strip($_FILES); $_ENV = magic_quotes_strip($_ENV); $_SERVER = magic_quotes_strip($_SERVER); } function magic_quotes_strip($mixed) { if(is_array($mixed)) return array_map('magic_quotes_strip', $mixed); return stripslashes($mixed); } ?> |
ugh, idd enkele quotes vergetenquote:Op dinsdag 9 mei 2006 17:32 schreef ikke_ook het volgende:
je vergeet hoogst waarschijnlijk de quotes om de value van het input veld.
Maar das niet echt makkelijk om te ruiken voor ons... misschien kun je een voorbeeldje posten In het daarvoor bestemde topic
Nee, dat is het nietquote:Op dinsdag 9 mei 2006 17:35 schreef Fugie het volgende:
[..]
Het is trouwens een php webshop met een waarde die ik ophaal uit php, dus dit is wel het goede topic hoor
voeg ook even htmlspecialchars() toequote:Op dinsdag 9 mei 2006 17:35 schreef Fugie het volgende:
[..]
ugh, idd enkele quotes vergeten![]()
krijg je als je te lang bezig bent![]()
Het is trouwens een php webshop met een waarde die ik ophaal uit php, dus dit is wel het goede topic hoor
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |