Toen je vroeg 'met welk programma bekeek je de source' begreep ik hem. Vandaar de puntjes.quote:Op vrijdag 28 april 2006 19:39 schreef JeRa het volgende:
[..]
[..]
Als je die source met wordpad had bekeken was er geen probleemmaar tot dusver is dat dus een clientside probleem met de textviewer en nog niet met de server
1 2 3 4 5 6 7 8 9 10 | $result = mysql_query($sql); $num=mysql_numrows($result); $i=0; while ($i < $num) { $temp[$i] = mysql_result($result,$i,"toegelaten"); echo $temp; $i++; } |
include je toevallig iets?quote:Op zaterdag 29 april 2006 22:30 schreef the_jasper het volgende:
stukje code uit mijn pagina
[ code verwijderd ]
ik probeer dit maar ik krijg alleen: Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in .....
wtf is het probleem
ik wil kijken welke waarde in de kolom toegelaten staat voor de gebruiker in de tabel gebruikers
maar het gaat alleen maar mis![]()
zal vast een heel dom foutje zijn
1 2 3 | $result = mysql_query($sql) or die(mysql_error()); $num=mysql_numrows($result); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | echo '<br><br>'; echo $gebruikersnaam[$n]; echo ' '; echo $score; echo ' '; echo $c; // schrijf de score weg naar de score kolom $schrijfweg = "UPDATE `".$gebruikersnaam[$n]."` SET `punten` = ".$score." WHERE 'wedstrijd' = ".$c.""; echo ' '; echo $schrijfweg; mysql_query($schrijfweg) or die(mysql_error()); |
1 2 3 | jasper 1 1 UPDATE `jasper` SET `punten` = 1 WHERE 'wedstrijd' = 1 |
1 2 | punten = 3 3 |
Je wilt e-mailadressen ge-encrypt opslaan (waarom weet ik niet) maar daarvoor wil je je niet verdiepen in encryptie? What about de RC4-encryptie die in het vorige deel aan bod is gekomen? Eén functie om tot op zekere hoogte veilig te encrypten en decryptenquote:Op zondag 30 april 2006 15:06 schreef beerten het volgende:
Al ben ik geen totale n00b, maar om me nu voor iets dergelijks helemaal te verdiepen in encryptie is mijn sinziens overbodig.
[PHP/(My)SQL] voor dummies - Deel 25 Ik heb Chandlers posting als basis gebruikt. En dit werkt.quote:Op zondag 30 april 2006 15:36 schreef JeRa het volgende:
[..]
Je wilt e-mailadressen ge-encrypt opslaan (waarom weet ik niet) maar daarvoor wil je je niet verdiepen in encryptie? What about de RC4-encryptie die in het vorige deel aan bod is gekomen? Eén functie om tot op zekere hoogte veilig te encrypten en decrypten
En hoe voorkom ik dat men mijn php bestandje kan uitlezen?quote:Op zondag 30 april 2006 18:44 schreef the_jasper het volgende:
als je geen php genie bent heb je al een probleem als ze je php bestand waarmee je decrypt kunnen uitlezen. De waardes moeten toch ergens hardcoded neergezet worden.
ik weet niet wat voor encryptie RC 4 is maar je hebt altijd een sleutel nodig
Een goede start is het buiten de webroot zetten van gevaarlijke gegevens zoals usernames en wachtwoorden. In de bestanden waar de webserver wél bij kan kun je deze bestanden includen zonder problemen.quote:Op zondag 30 april 2006 19:55 schreef beerten het volgende:
[..]
En hoe voorkom ik dat men mijn php bestandje kan uitlezen?
Oftewel als voorbeeld:quote:Op zondag 30 april 2006 19:59 schreef JeRa het volgende:
[..]
Een goede start is het buiten de webroot zetten van gevaarlijke gegevens zoals usernames en wachtwoorden. In de bestanden waar de webserver wél bij kan kun je deze bestanden includen zonder problemen.
Door gewoon het complete pad in te vullen neem ik aan? Het werkt in ieder geval wel!quote:Op zondag 30 april 2006 20:37 schreef beerten het volgende:
[..]
Oftewel als voorbeeld:
/domains/domain.com/public_html/inlcude/wachtwoorden.php
/domains/domain.com/private_html/inlcude/wachtwoorden.php
Bij een document in de public_html include ik dan het bestandje uit de private_html. Maar hoe fiks ik m dit?
1 |
hoeft er geen haakjes omheen?quote:Op zondag 30 april 2006 22:02 schreef beerten het volgende:
[..]
Door gewoon het complete pad in te vullen neem ik aan? Het werkt in ieder geval wel!
[ code verwijderd ]
Als jullie de vraag niet beantwoorden moet je wat...quote:Op zondag 30 april 2006 22:06 schreef JeRa het volgende:
Het zou verrekte handig zijn als alle users hier hun eigen vragen beantwoordenoh en beerten, als je veel includes moet uitvoeren is deze functie waarschijnlijk ook wel handig
Dat doen 'we' expres, zo leren we users aan dat ze soms ook best zelf op het antwoord kunnen komenquote:Op zondag 30 april 2006 23:04 schreef beerten het volgende:
[..]
Als jullie de vraag niet beantwoorden moet je wat...
1 2 3 | $data = mysql_query($cfg['DB_main_query']) or die(mysql_error()); ?> |
1 2 3 4 5 6 7 8 | while($data2 = mysql_fetch_array($data)) { $line .= "RGL,".$data2['no'].",".$data2['aantal'].",\r\n"; $RGL2 = $data2['line_id'].";".$data2['product_id'].";".$data2['aantal'].";".$data2['vsnno'].";".$data2['titel'].";".$data2['comments'].";\r\n"; fwrite($file2,$RGL2); } ?> |
hmm okequote:Op maandag 1 mei 2006 16:21 schreef JeRa het volgende:
@mschol
Een goede start is het kiezen van logische namen voor je variabelen. 'data' en 'data2' zegt absoluut niet wat erin staat; kies dan iets meer in de richting van 'resultset' en 'row' bijvoorbeeld
Verder snap ik je vraagstelling ook niet. Wat bedoel je met 'dan is die leeg'? Zijn er geen rows meer terwijl je die verwacht? Ben je de resource identifier kwijt? Iets concreter graag
edit: oh, misschien bedoel je dat je later nóg een keer die resultset wilt raadplegen? Je kunt dan het beste de data in een array zetten en die raadplegen, of iets uitvoeren met mysql_data_seek() nadat je een keer over de resultset bent heengelopen.
Snap je wel wat er precies in jouw variabele $data komt te staan?quote:Op maandag 1 mei 2006 16:38 schreef mschol het volgende:
[..]
hmm oke
als volgt:
ik probeer $data (de resultset dus kennelijk) later dus idd nog eens te benaderen maar dan staat er niks meer in de variable $data (terwijl ik aan neem dat wanneer een variable gevuld wordt met gegrevens pas leeg wordt gemaakt als het script eindigd, of neem ik dat verkeerd aan?)
zo ver wist ik te komen.quote:Op maandag 1 mei 2006 16:43 schreef JeRa het volgende:
[..]
Snap je wel wat er precies in jouw variabele $data komt te staan?
Als je een query uitvoert krijg je een resource identifier terug van PHP waarmee je de data die je terug hebt gekregen van MySQL kunt benaderen...en dus niet de data zelfdoe maar eens een 'echo $data' direct na het uitvoeren van je query.
dit wist ik niet..quote:Die resource identifier houdt een pointer bij over wáár je precies in de resultset zit. Die wordt opgehoogd als je een mysql_fetch_*-aanroep doet. Als je dus een keer helemaal over de resultset bent gelopen, dan staat die pointer achteraan en dan krijg je bij volgende aanroepen dus geen data meer terug.
Dan kun je dus het beste één keer alle data in een aparte array zetten zodat je die alsnog kunt raadplegen, of die pointer resetten door middel van mysql_data_seek()
1 2 3 4 5 6 7 | ,Nettoprijs,Leverancier,VB,Kenmerk1,Kenmerk2,Kenmerk3,Kenmerk4,Kenmerk5) values ('Etna','EEK 260 VA','Witgoed','Inbouw koelkast','170 cm en hoger','999.00','999.00','487.00','270.84','Atag Etna Pelgrim HomeProducts B.V.','14.29','Energieklasse: A','Netto Inhoud koelgedeelte: 176liter','Nismaat Hoogte: 177.5cm','Nismaat Breedte: 57cm','Nismaat Diepte: 56cm')"); mysql_query("insert into Test (Merk,Type,Hoofdgroep,Subgroep,Subsubgroep,Goingprijs,Brutoprijs,Verkoopprijs ,Nettoprijs,Leverancier,VB) values ('B&H','RHKNST4060 NGOUD','Foto en film','Overige accessoires','Lijsten','18.95','18.95','18.95','6.11','United Distributie','0.00')"); |
Het komt niet uit een database?quote:Op maandag 1 mei 2006 20:15 schreef the_jasper het volgende:
hoi ben ik weer
mijn wk poule is bijna af, berekeningen worden uitgevoert etc
maar nu wil ik een scores lijstje maken. dus bovenaan degene met de hoogste
ik lees data uit met een loop.
Er zijn dan 2 variablen $user en $score
maar als ik wil gaan sorteren op score hoe doe ik dat dan zonder de bijbehorende username kwijt te raken of mensen met dezelfde score te overschrijven. Ik zat bij multi dimensionele arrays te kijken maar ik snap er eigenlijk niets van :S
hoe pak je zoiets aan. (alleen sorteren, de rest lukt wel)
Wel goed controleren of anders...quote:Op maandag 1 mei 2006 19:58 schreef JeRa het volgende:
eval() is evil maar kan je uit de brand helpen, soms
1 2 | echo file_get_contents('index.php'); |
ja maar uit een stuk of 100 tabellenquote:
Weet je hoe JOINs werken? Die doen denk ik namelijk precies wat jij wilquote:Op maandag 1 mei 2006 20:18 schreef the_jasper het volgende:
[..]
ja maar uit een stuk of 100 tabellen
Er is een tabel waar hij de users uitleest die aan een bepaalde voorwaarde voldoen
vervolgens leest hij hun punten kolom uit stopt die in een array en telt ze bij elkaar op
uhhh... elke user heeft een aparte tabel? oky...quote:Op maandag 1 mei 2006 20:18 schreef the_jasper het volgende:
[..]
ja maar uit een stuk of 100 tabellen
Er is een tabel waar hij de users uitleest die aan een bepaalde voorwaarde voldoen
vervolgens leest hij hun punten kolom uit stopt die in een array en telt ze bij elkaar op
1 |
Als je het zo hebt geregeld moet je je toch eens ernstig afvragen of je database-opmaak in orde is, zoek bv. eens op database normalisatie met googlequote:Op maandag 1 mei 2006 20:27 schreef the_disheaver het volgende:
[..]
uhhh... elke user heeft een aparte tabel? oky...
Uhm, je hebt een WK-poule met 100 tabellen?quote:Op maandag 1 mei 2006 20:18 schreef the_jasper het volgende:
[..]
ja maar uit een stuk of 100 tabellen
Er is een tabel waar hij de users uitleest die aan een bepaalde voorwaarde voldoen
vervolgens leest hij hun punten kolom uit stopt die in een array en telt ze bij elkaar op
maar anders heb je toch 64 * 7 + alle andere kolommen in gebruikers in 1 tabel?quote:Op maandag 1 mei 2006 20:31 schreef JeRa het volgende:
Als je het zo hebt geregeld moet je je toch eens ernstig afvragen of je database-opmaak in orde is, zoek bv. eens op database normalisatie met google
Ja, maar dan ook echt volkomen verkeerd. Sorry...quote:Op maandag 1 mei 2006 21:26 schreef the_jasper het volgende:
bedankt voor de reacties
iedereen die zich aanmeld krijgt een tabel toegewezen, daar worden de 64 wedstrijden in opgeslagen zoals zij ze hebben ingevult met een paar kolommen : de wedstrijd , het land dat thuis speelt, het land dat uit speelt de uitslag de score van de thuisploeg de score van de uitploeg en het aantal punten behaalt met die wedstrijd.
dit wordt niet als tekst opgeslagen maar als getallen. Zo is bijvoorbeeld van uitslag van die wedstrijd
1 = gelijkspel
2 = eerste wint (thuis)
3 = de tweede wint (uit)
Net zoals bijvoorbeeld de landen die gewoon in een array staan en het getal overeenkomt met de plaats in de array
die punten worden berekent door de tabel te vergelijken met een mastertabel die de waardes van het wk zal bevatten
verder is er nog een user tabel met alle gegevens over de users zoals email wachtwoord etcetc maar ook of ze betaald hebben. Ik laat alleen de scores zien van de mensen die betaald hebben en toegelaten zijn (het is een poule van vrienden).
dat van die 100 user is een schatting, vorig jaar deden we het met de hand en deden 105 mensen mee. Dit jaar gaat het dus automatisch. Mss kan het beter ingedeelt worden maar het werkt nu bijna perfect en het is precies zoals wij willen en waar je punten voor krijgt.
ik doe pas mysql voor een paar dagen php een jaar, en moest altijd heel creatief zijn met tekstbestanden enzo omdat mijn host geen mysql had maar lycos heeft dat nu in het pakket zitten dat ik heb dus waarom zou ik het niet gebruiken?
[..]
maar anders heb je toch 64 * 7 + alle andere kolommen in gebruikers in 1 tabel?
dit is in mijn ogen veel makkelijk, of begrijp ik het verkeerd?
Nee, je hebt dan één kolom 'userid' meer die een foreign key is naar de id van de gebruikerquote:Op maandag 1 mei 2006 21:26 schreef the_jasper het volgende:
[..]
maar anders heb je toch 64 * 7 + alle andere kolommen in gebruikers in 1 tabel?
dit is in mijn ogen veel makkelijk, of begrijp ik het verkeerd?
Even geheel off-the-record: je beseft je hopelijk dat je bezig bent met een soort van kansspel? Het is gewoon een ordinaire pool, dit valt onder zoveel als kansspelen. Online gokken op wedstrijden. Het grootste probleem is dat je geld vraagt. De belastingdienst en jij worden geen vrienden. Je hebt dit geheel openbaar online staan. Excuses zijn er dus niet.quote:Op maandag 1 mei 2006 21:41 schreef the_jasper het volgende:
owja als jullie nieuwsgierig zijn
http://wk.familie-gerbers.nl
(url is tijdelijk ff een leuke .tk zoeken)
je kan je registreren maar je ziet toch niets omdat je niet bent toegelaten tot het spel
en dus niet eens bij de invul schermen kan komen
als iemand wil kijken registert ie maar, ik zie je wel verschijnen op de admin pagina
de error op het score pagina is de fout die ik nu probeer uit te zoeken
Nee, maar dat is dan ook het enige nadeel. Je zal inderdaad, als je het goed doet, moeten kijken in phpMyAdmin welk record uit welke tabel, ofhankelijk van andere tabellen, je moet wijzigen. Maar als je je systeem goed opzet kan je dit ook met een admin-gedeelte doen.quote:Op maandag 1 mei 2006 21:55 schreef the_jasper het volgende:
ok wist ik niet
is iig leerzaam
sorry ben een beginner maar wat is het voordeel hiervan? simpelere queries? snelheid? neem het minder ruimte in? Makkerlijker te beheren?
Zo te zien is het iig minder leesbaar in phpMyAdmin dan die van mij. Snel ergens een nummertje fixen of checken of het goede getal op de juiste plaats komt is er niet meer bij.
Met één extra kolom in één grote tabel kun je nog prima werken hoor. Wat dacht je van:quote:Op maandag 1 mei 2006 21:55 schreef the_jasper het volgende:
Zo te zien is het iig minder leesbaar in phpMyAdmin dan die van mij. Snel ergens een nummertje fixen of checken of het goede getal op de juiste plaats komt is er niet meer bij.
1 2 | UPDATE pool SET blaat = 5 WHERE userid = 91 AND ...etc |
quote:Op maandag 1 mei 2006 22:02 schreef the_jasper het volgende:
aaah ok bedankt
volgende keer kan ik het beter zo aanpakken inderdaad nu te laat om te gaan herschrijven
maar het is ook echt een leerproject
1 2 3 4 5 6 7 8 9 10 | $bericht = " voorvoegsel: ". $_POST['voorvoegsel']; $bericht .= " Naam = ".$_POST['naam']; $bericht .= " Emailadres = ".$_POST['emailadres']; $bericht .= " Telefoonnummer = ".$_POST['telefoonnummer']; $bericht .= " Bericht: \r\n"; $bericht .= $_POST['bericht']; Mail("mail@adres.nl", $_POST['onderwerp'], $bericht); ?> |
misschien een mogelijkheid om een random gegenereerde tekst erbij te zetten in een plaatje en die als check gebruiken om te kijken of het een mens is die het formulier invult?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
Alvast bedankt.
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
Alvast bedankt.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | $verboden= array('Content-Type','multipart/mixed;'); //hier woorden in welke wel in de spam voor komen, maar niet in de normale aanvragen (penis, invited, poker, viagra, etc). De woorden die er al instaan, checken op mail injection, dus best handig om te laten staan :) foreach ($verboden as $search) { if(stristr($_POST['voorvoegsele'],$search)!=FALSE || stristr($_POST['naam'],$search)!=FALSE || stristr($_POST['emailadres'],$search)!=FALSE|| stristr($_POST['telefoonnummer'],$search)!=FALSE || stristr($_POST['berichte'],$search)!=FALSE){ header("HTTP/1.0 404"); die(); } } if(preg_match('/^[A-Za-z0-9._-]+[@][0-9A-Za-z_\-]+([.][0-9A-Za-z]+)([.][A-Za-z]{2,4}){0,1}$/x',$_POST['email'])){ //voorkomt dater gemailed wordt met een niet bestaand mail adres $bericht = " voorvoegsel: ". $_POST['voorvoegsel']; $bericht .= " Naam = ".$_POST['naam']; $bericht .= " Emailadres = ".$_POST['emailadres']; $bericht .= " Telefoonnummer = ".$_POST['telefoonnummer']; $bericht .= " Bericht: \r\n"; $bericht .= $_POST['bericht']; Mail("mail@adres.nl", $_POST['onderwerp'], $bericht); } ?> |
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | php include("config.php"); //error_reporting(E_ALL); // $breedte is nieuwe breedte // $hoogte is nieuwe hoogte // $imgFILE waar het plaatje van gemaakt wordt, het orgineel dus (bijv $_FILES['image']['tmp_name']) // $imgDIR waar het plaatje naartoe verhuisd als ie gemaakt is // $imgNAME nieuwe naam voor plaatje (bijv. mysql_insert_id () ) // $imgEXTENSION jpg of voor thumbs _th.jpg etc. // $quality getal tussen de 0 en 100 waarbij 100 beste kwaliteit is function create_new_JPGimage ($breedte, $hoogte, $imgFILE, $imgDIR, $imgNAME, $imgEXTENSION, $quality) { //temp_photo voor thumbnail maken $photo = imagecreatefromjpeg ($imgFILE); //afmetingen bepalen $source_x = imagesx($photo); $source_y = imagesy($photo); $target_x = $breedte; $target_y = $hoogte; //als foto te hoog is if (($source_x/$target_x) < ($source_y/$target_y)) { //echo "te hoog"; $from_y = ceil(($source_y - ($target_y * $source_x / $target_x))/2); $from_x = '0'; $source_used_y = ceil(($target_y * $source_x / $target_x)); $source_used_x = $source_x; } //als foto te breed is if (($source_y/$target_y) < ($source_x/$target_x)) { //echo "te breed"; $from_x = ceil(($source_x - ($target_x * $source_y / $target_y))/2); $from_y = '0'; $source_used_x = ceil(($target_x * $source_y / $target_y)); $source_used_y = $source_y; } //als verhoudingen gelijk zijn if (($source_x/$target_x) == ($source_y/$target_y)) { $from_x = '0'; $from_y = '0'; $source_used_x = $source_x; $source_used_y = $source_y; } //nieuwe image maken en wegschrijven naar dir $create_blank = imagecreatetruecolor ($target_x, $target_y); imagecopyresampled ($create_blank, $photo, 0, 0, $from_x, $from_y, $target_x, $target_y, $source_used_x, $source_used_y); $new_filename = $imgDIR.$imgNAME.$imgEXTENSION; $new_filename = 'thumbs/'.$imgNAME; ImageJpeg($create_blank,$new_filename,$quality); Imagedestroy($photo); } php global $_FILES; $filename = $_FILES['userfile']['name']; $allow[0] = "jpg"; $uploadname = $_FILES['userfile']['name']; $i = 0; $excist = 'yes'; $bestand = "$uploadname"; $extentie = substr($bestand, -4); $naam_zonder_ext = basename($bestand, "$extentie"); $extentie = substr($uploadname, -3); while ( $excist == 'yes' ) { $file = "$naam_zonder_ext"."[$i]."."$extentie"; $file2 = "uploads/"."$naam_zonder_ext"."[$i]."."$extentie"; if (file_exists($file2)) { //echo "Het bestand bestaat ( $file ) <br />"; $i++; } else { //echo "Het bestand bestaat niet ( $file ) <br />"; $uploadname = "$file"; $excist = "no"; } } $extentie = substr($uploadname, -3); for ($i = 0; $i < count($allow); $i++) { if ($extentie == $allow[$i]) { $extentie_check = "ok"; $i = count($allow) + 5; // om loop te beindigen } } if ($extentie_check) { if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { move_uploaded_file($_FILES['userfile']['tmp_name'], "uploads/" . $uploadname); $SPEL_NAAM = $_POST['naam']; $SPEL_LINK = $_POST['link']; $SPEL_PLAATJE = $uploadname; $SPEL_CATEGORIE_ID = $_POST['categorie']; 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'].", ".$_POST['specificaties'].", ".$_POST['vraagprijs']." )"); $een = '1'; $query = 'SELECT * FROM `occasions` ORDER BY `id` DESC LIMIT 1,1'; $result = mysql_query($query); while ($result=mysql_fetch_array($result, MYSQL_ASSOC)) { $occasion_id = $result['id']; $occasion_id2 = $result['id']; } $sql = 'SELECT * FROM `occasions` ORDER BY `ID` DESC LIMIT 1'; $result = mysql_query($sql); while ($row = mysql_fetch_array($result)) { $occasion_id = $row['id']; } mysql_query ("INSERT INTO fotos ( id, foto, occasion_id ) VALUES ( '', $uploadname, $occasion_id )"); $filling= "- $occasion_id - $uploadname <br />" . $_POST['merk'] ."<br />". $_POST['type'] ."<br />". $_POST['bouwjaar'] ."<br />". $_POST['kilometerstand'] ."<br />". $_POST['kleur'] ."<br />". $_POST['brandstof'] ."<br />". $_POST['specificaties'] ."<br />". $_POST['vraagprijs'] ."<br />"; $breedte = '100'; $hoogte = '100'; $imgFILE = 'uploads/'.$uploadname; $imgDIR = 'thumbs'; $imgNAME = $uploadname; $imgEXTENSION = '.jpg'; $quality = '100'; create_new_JPGimage ($breedte, $hoogte, $imgFILE, $imgDIR, $imgNAME, $imgEXTENSION, $quality); echo"$filling"; } } else { echo "Sorry je hebt geen foto toegevoegd of een bestand met de verkeerde extentie"; } <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Untitled Document</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> php echo"$header"; </body> </html> ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | mysql_query ("INSERT INTO fotos ( id, foto, occasion_id ) VALUES ( '', $uploadname, $occasion_id )"); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | mysql_query ("INSERT INTO fotos ( id, foto, occasion_id ) VALUES ( '', 'blaaaap', $occasion_id )"); ?> |
Je script is niet het probleem. Je hebt het emailadres als tekst op de paina staan. Er zijn speciale zoekmachines die niets anders doen dan webpagina's doorzoeken op emailadressen. Het emailadres is dus gevonden, dus krijg je spam binnen.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
Alvast bedankt.
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 )"); ?> |
Zijn backticks niet verplicht? Dat is me nooit duidelijk geworden, maar ik gebruik het wel altijd:quote:Op dinsdag 2 mei 2006 17:50 schreef BaggerUser het volgende:
als ik er dit van maak
[ code verwijderd ]
werkt het zelfs niet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | mysql_query ("INSERT INTO `fotos` ( `id`, `foto`, `occasion_id` ) VALUES ( '', $bla, $occasion_id )") or die( mysql_error() ); |
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.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |