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.
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
1 |
1 2 3 4 5 6 7 8 9 10 11 12 | php $naam = "Jantje van Jansen"; $array = explode(" ", $naam); $voornaam = $array['0']; $achternaam = ""; for($i = 1; $i < count($array); $i++){ $achternaam .= " ".$array[$i]; } ?> |
MySQL is eigenwijs bij het aan elkaar plakken van strings. Ze hebben daar een complete functie voor, CONCAT genaamdquote:Op dinsdag 9 mei 2006 23:14 schreef mstx het volgende:
Ik heb een probleempje met MySQL.
Ik heb een tabel met 3 kolommen: voornaam, achternaam, emailadres.
Nu heb ik één tekstvak waar ik de naam in kan typen en daarmee moet ik dus het e-mailadres zien te selecteren. De query moet dus zoiets zijn:
[ code verwijderd ]
Maar die "+" werkt natuurlijk niet. Is er geen functie in MySQL die 2 kolommen aan elkaar plakt ofzo?
P.S. Ik kan niet exploden op een spatie omdat de voornaam (of achternaam misschien ook) ook een spatie kan bevatten.
Zoiets zocht ik ja. Ik zal het vanmiddag eens uitproberen.quote:Op woensdag 10 mei 2006 08:22 schreef Light het volgende:
[..]
MySQL is eigenwijs bij het aan elkaar plakken van strings. Ze hebben daar een complete functie voor, CONCAT genaamd
Volgens mij gaat dat mis als je de naam "Karel Jan van den Broek" hebt o.i.d.quote:
Volgens mij zou het opslaan in twee verschillende velden dan juist heel erg zinnig zijn. Je kunt dan namelijk zoeken op "voornaam achternaam", maar iemand die dan ook alleen "achternaam" in kunnen typen, of "achternaam, voornaam".quote:Op woensdag 10 mei 2006 10:03 schreef mstx het volgende:
[..]
Zoiets zocht ik ja. Ik zal het vanmiddag eens uitproberen.
Bedankt!![]()
En voornaam en achternaam apart laten invullen kan niet. Het is namelijk voor een webmail programmatje. Bij het opstellen van een nieuw bericht begin je te typen in het "Aan:"-veld en m.b.v. AJAX roep ik dus deze pagina aan om in het adresboek te zoeken naar contactpersonen die met die letters (die je typt) beginnen.(Net zoiets dus als bij google suggest en op www.ns.nl maar bij mij werkt het ook als je een komma typt en dan nog een persoon zoekt.)
Ter verduidelijking, het gaat dus om dit:quote:Op woensdag 10 mei 2006 14:24 schreef CraZaay het volgende:
[..]
Volgens mij zou het opslaan in twee verschillende velden dan juist heel erg zinnig zijn. Je kunt dan namelijk zoeken op "voornaam achternaam", maar iemand die dan ook alleen "achternaam" in kunnen typen, of "achternaam, voornaam".
Ik snap je probleem, maar met wat creativiteit zou je een eind moeten kunnen komen, ook als concat niet mocht werken op de manier die je voor ogen hebt. Als je de voornaam bijvoorbeeld hebt zou je verder kunnen zoeken op de achternamen van de personen waarvan de voornamen al matchen.quote:Op woensdag 10 mei 2006 16:32 schreef mstx het volgende:
[..]
Ter verduidelijking, het gaat dus om dit:
[afbeelding]
En het is opgeslagen in 2 aparte kolommen.
Hij kijkt nu of de eerste letters van de voornaam OF achternaam OF emailadres met een "m" begint. Maar als je nu "voornaam achternaam" intypt kan hij niks vinden (omdat kolom "voornaam" niet "voornaam achternaam" bevat en kolom "achternaam" ook niet) dus ik ga straks even die CONCAT functie proberen.
Dit is iets wat je denk ik beter met javascript kunt oplossen dan met SQLquote:Op woensdag 10 mei 2006 16:32 schreef mstx het volgende:
[..]
Ter verduidelijking, het gaat dus om dit:
[afbeelding]
En het is opgeslagen in 2 aparte kolommen.
Hij kijkt nu of de eerste letters van de voornaam OF achternaam OF emailadres met een "m" begint. Maar als je nu "voornaam achternaam" intypt kan hij niks vinden (omdat kolom "voornaam" niet "voornaam achternaam" bevat en kolom "achternaam" ook niet) dus ik ga straks even die CONCAT functie proberen.
Hier stop ik even. Je weet wat 'inloggen' inhoudt op websiteA.nl? Waarschijnlijk krijgt de gebruiker hier een session ID toegestuurd en wordt deze in een cookie voor het domein websiteA.nl opgeslagen.quote:Op woensdag 10 mei 2006 16:38 schreef Desdinova het volgende:
Ik heb een database met users, met username, password, en ehh, data ofzo.
de informatie uit deze database wil ik gedeeltelijk delen met anderen. dus een vriend van mij heeft websiteA.nl ofzo, waar een login schermpje op te vinden is. hier logt een gebruiker in met een username en password.
Zoals eerder gezegd zul je dan de inloggegevens moeten hebben via de session, wat voor de meeste browsers inhoudt dat je een subdomein of subdirectory van websiteA.nl moet zijn. Een ingelogde gebruiker zal op websiteB.nl nu eenmaal niet zomaar zijn session ID afstaan.quote:Nou wil ik dat aan de hand van die login, de data uit veld 'data' wordt verkregen. dat kan natuurlijk via een standaard query en externe database toegang, maar dan kan de query aangepast worden zodat alle data beschikbaar is voor degene met toegang, en dat wil ik dus juist beperken.
sessie is idd niet te behouden want zijn andere servers. het gaat meer om verifiering van username+wachtwoord en het zoeken van de daarbij horende data. maar pin me niet vast op mn woorden want ik roep ook maar ietsquote:Op woensdag 10 mei 2006 17:25 schreef JeRa het volgende:
[..]
Hier stop ik even. Je weet wat 'inloggen' inhoudt op websiteA.nl? Waarschijnlijk krijgt de gebruiker hier een session ID toegestuurd en wordt deze in een cookie voor het domein websiteA.nl opgeslagen.
[..]
Zoals eerder gezegd zul je dan de inloggegevens moeten hebben via de session, wat voor de meeste browsers inhoudt dat je een subdomein of subdirectory van websiteA.nl moet zijn. Een ingelogde gebruiker zal op websiteB.nl nu eenmaal niet zomaar zijn session ID afstaan.
WebsiteA.nl maakt gebruik van een MySQL-server, en als websiteB.nl hier ook toegang tot heeft kun je toch gewoon SQL-queries uitvoeren waarmee je de data ophaalt? Het is niet zo alsof je gebruikers zomaar je queries kunnen aanpassen, of je doet iets gruwelijks fout.quote:Op woensdag 10 mei 2006 17:30 schreef Desdinova het volgende:
[..]
ik wil gewoon mn data van die gebruiker naar de andere server hebben zonder dat andere data toegankelijk is (tenzij username+password valid is)
1 2 3 4 5 6 7 8 9 | LEFT(`email`, ".$e_length.") = '".$e."' OR LEFT(`firstname`, ".$e_length.") = '".$e."' OR LEFT(`lastname`, ".$e_length.") = '".$e."' OR LEFT(CONCAT(`firstname`, ' ', `lastname`), ".$e_length.") = '".$e."') |
1 2 3 | FROM documents WHERE MATCH (document_name) AGAINST ('script' IN BOOLEAN MODE) |
1 2 3 | FROM documents WHERE MATCH (document_name) AGAINST ('javascript' IN BOOLEAN MODE) |
1 2 3 | FROM documents WHERE MATCH (document) AGAINST ('+php+script' IN BOOLEAN MODE) |
1 2 3 4 5 6 7 8 9 10 11 12 13 | if(count($parts) > 1){ $user_id=$parts[0]; $order_id=$parts[1]; $queryUser="UPDATE users SET activated='1' WHERE user_id=".$user_id; mysql_query($queryUser); $queryOrders="UPDATE test_orders SET activated='1' WHERE order_id=".$order_id; mysql_query($queryOrders); }else{ $order_id=$parts[0]; $queryOrders="UPDATE test_orders SET activated='1' WHERE order_id=".$order_id; mysql_query($queryOrders); } |
1 2 | UPDATE test_orders SET activated='1' WHERE order_id=13 |
quote:Op woensdag 10 mei 2006 23:39 schreef Swetsenegger het volgende:
Ach fuck, ik heb heel de db toegang niet geinclude in het script
Het is een script welke een xml catcht en vervolgens verwerkt. Het script draait dus niet in de browser. En ik weet niet hoe ik een fake xml kan aanbieden.quote:Op woensdag 10 mei 2006 23:43 schreef JeRa het volgende:
[..]
Geeft ie normaal dan geen foutmelding op mysql_query()?
Als dat om zo'n overschrijvings-XML gaat (van de bank) lijkt het me verstandig om een manier te vinden om héél veel te testen met fake XML'squote:Op woensdag 10 mei 2006 23:50 schreef Swetsenegger het volgende:
[..]
Het is een script welke een xml catcht en vervolgens verwerkt. Het script draait dus niet in de browser. En ik weet niet hoe ik een fake xml kan aanbieden.
hehe ja ik snap wat je bedoeltquote:Op woensdag 10 mei 2006 17:33 schreef JeRa het volgende:
[..]
WebsiteA.nl maakt gebruik van een MySQL-server, en als websiteB.nl hier ook toegang tot heeft kun je toch gewoon SQL-queries uitvoeren waarmee je de data ophaalt? Het is niet zo alsof je gebruikers zomaar je queries kunnen aanpassen, of je doet iets gruwelijks fout.
Ik gewoon testen tegen de test-omgeving van de bank.quote:Op woensdag 10 mei 2006 23:56 schreef JeRa het volgende:
[..]
Als dat om zo'n overschrijvings-XML gaat (van de bank) lijkt het me verstandig om een manier te vinden om héél veel te testen met fake XML'sze worden neem ik aan via een HTTP-POST gestuurd? Kun je die niet nabootsen door een tweede scriptje te schrijven dat via een socket stream wat data stuurt (en eventueel wil ik hier nog wel een voorbeeldje plaatsen)?
Je hoeft natuurlijk siteB geen toegang te geven tot een remote databaseserver. Je kunt op siteA prima een API draaien waar je gebruik van maakt. En tadaa, je eigen Identity Management / Single Sign-On is geborenquote:Op donderdag 11 mei 2006 11:53 schreef Desdinova het volgende:
[..]
hehe ja ik snap wat je bedoelt
maar het punt is dus, die toegang tot de database vanaf websiteB.nl moet beperkt zijn tot alleen het verkrijgen van de gegevens die horen bij de opgegeven gegevens. 1 rij dus.
maar ik heb al n ideetje, even kijken of dat lukt.
Dat is wel heel tof, dat ze een testomgeving aanbieden. Welke bank / betalingssysteem was dat ook alweer?quote:Op donderdag 11 mei 2006 12:30 schreef Swetsenegger het volgende:
[..]
Ik gewoon testen tegen de test-omgeving van de bank.
Nadat de eerste integratietesten geslaagd zijn, mag je WEL het test systeem misbruiken voor je eigen tests en dat werkt goed.
En hoe moet siteB gebruik maken van die API? Lijkt me dat dat alsnog via authenticatie of een secure socket layer moet gebeurenquote:Op donderdag 11 mei 2006 15:16 schreef CraZaay het volgende:
[..]
Je hoeft natuurlijk siteB geen toegang te geven tot een remote databaseserver. Je kunt op siteA prima een API draaien waar je gebruik van maakt. En tadaa, je eigen Identity Management / Single Sign-On is geboren![]()
iDEAL een samenwerking van Rabo, ABN, ING, Postbank en Fortis. Je betaalt gewoon met je internet bankier omgeving.quote:Op donderdag 11 mei 2006 15:38 schreef JeRa het volgende:
[..]
Dat is wel heel tof, dat ze een testomgeving aanbieden. Welke bank / betalingssysteem was dat ook alweer?
eerhm raar vraagje maar heb je je database gestart?quote:Op donderdag 11 mei 2006 10:39 schreef big_al het volgende:
Ik wil graag een FAQ-tool lokaal draaien. Ik heb hiervoor een php script http://www.phpmyfaq.de/ en heb wamp geinstalleerd (standaard). De database bij dit script zou die zelf moeten genereren. Maar als ik het script wil installeren krijg ik de volgende foutmelding:
“The connection to the sqlite server could not be established”
Mis ik nou instellingen die gedaan moeten worden in wamp, phpadmin, sqlitemanager of in een script zelf nog?
Btw ik ben een complete n00b met een webserver opzetten.
Alvast bedankt.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class WTF extends mysqli { function query($query) { $parent::query($query); } } $wtf = new WTF(); $wtf->query('wtf'); ?> |
1 2 3 4 | Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM in /opt/users/jelle/wtf.php on line 6 |
Uiteraard, maar je hoeft geen databaseserver open te zetten voor de buitenwereld. Het is wat generieker zo iig.quote:Op donderdag 11 mei 2006 15:39 schreef JeRa het volgende:
[..]
En hoe moet siteB gebruik maken van die API? Lijkt me dat dat alsnog via authenticatie of een secure socket layer moet gebeuren
Maar je moet wel een API openzetten voor de buitenwereldquote:Op donderdag 11 mei 2006 19:57 schreef CraZaay het volgende:
[..]
Uiteraard, maar je hoeft geen databaseserver open te zetten voor de buitenwereld. Het is wat generieker zo iig.
Zoals ik al zei, het is generieker. Voor twee websites die PHP draaien is het niet aan de orde, maar een API welke gebruik maakt van een XML (e.d.) formaat kan makkelijker voor andere media ingezet worden naast de media die direct verbinding (kunnen) maken met een MySQL-server.quote:Op donderdag 11 mei 2006 20:03 schreef JeRa het volgende:
[..]
Maar je moet wel een API openzetten voor de buitenwereldwaarom niet een MySQL-verbinding via SSL? Dan heb je die extra performanceverlies via de API ook niet meer. Je kunt in MySQL zelfs aangeven dat één bepaalde user vanaf één aangegeven IP-adres of hostadres kan inloggen, dus dat zit wel snor.
Je hebt helemaal gelijk, heb ik overheen gelezenquote:Op donderdag 11 mei 2006 21:24 schreef CraZaay het volgende:
[..]
Zoals ik al zei, het is generieker. Voor twee websites die PHP draaien is het niet aan de orde, maar een API welke gebruik maakt van een XML (e.d.) formaat kan makkelijker voor andere media ingezet worden naast de media die direct verbinding (kunnen) maken met een MySQL-server.
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 | <head> <title>Google live search</title> <style> #targetDiv { background-color: #FFEEAA; width: 40%; } </style> <script language = "javascript"> var XMLHttpRequestObject = false; if (window.XMLHttpRequest) { XMLHttpRequestObject = new XMLHttpRequest(); } else if (window.ActiveXObject) { XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); } function getData(dataSource) { if(XMLHttpRequestObject) { XMLHttpRequestObject.open("GET", dataSource); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { eval(XMLHttpRequestObject.responseText); } } XMLHttpRequestObject.send(null); } } function getSuggest(keyEvent) { keyEvent = (keyEvent) ? keyEvent: window.event; input = (keyEvent.target) ? keyEvent.target : keyEvent.srcElement; if (keyEvent.type == "keyup") { if (input.value) { getData("google.php?qu=" + input.value); } else { var targetDiv = document.getElementById("targetDiv"); targetDiv.innerHTML = "<div></div>"; } } } function sendRPCDone(unusedVariable, searchTerm, arrayTerm, arrayResults, unusedArray) { var data = "<table>"; var loopIndex; if (arrayResults.length != 0) { for (var loopIndex = 0; loopIndex < arrayResults.length; loopIndex++) { data += "<tr><td>" + "<a href='http://www.google.com/search?q=" + arrayTerm[loopIndex] + "'>" + arrayTerm[loopIndex] + '</a></td><td>' + arrayResults[loopIndex] + "</td></tr>"; } } data += "</table>"; var targetDiv = document.getElementById("targetDiv"); targetDiv.innerHTML = data; } </script> </head> <body> <H1>Google live search</H1> Search for <input id = "textField" type = "text" name = "textField" onkeyup = "getSuggest(event)"> <div id = "targetDiv"><div></div></div> </body> </html> |
1 2 3 4 5 6 7 8 9 | $handle = fopen("http://www.google.com/complete/search?hl=en&js=true&qu=" . $_GET["qu"], "r"); while (!feof($handle)){ $text = fgets($handle); echo $text; } fclose($handle); ?> |
Denk het niet. Moet er een database gemaakt worden als het script die zelf aanmaakt, of zou z'n script alleen de tabellen en velden maken?quote:Op donderdag 11 mei 2006 17:05 schreef the_jasper het volgende:
[..]
eerhm raar vraagje maar heb je je database gestart?
ik gebruik trouwens xampp de opvolger van wampp
tis heel makkelijk en je download het als kant en klaar pakket
met een launcher kan je vervolgens alles starten en stoppen
ff googlen op xampp als je dat wilt![]()
Ergens in het script zit een bestandje install.php Of iets dergelijks. Daarion stel je de database gegevens in.quote:Op vrijdag 12 mei 2006 09:20 schreef big_al het volgende:
[..]
Denk het niet. Moet er een database gemaakt worden als het script die zelf aanmaakt, of zou z'n script alleen de tabellen en velden maken?
Owja en als ik z'n databse met phpmyadmin aanmaak, waar zet die hem dan neer zodat ik in het installatiescript ernaar kan verwijzen?
Alvast bedankt.
Ja dat snap ik. Ik heb nu een database aangemaakt met phpmyadmin. Maar waar zet phpmyadmin die neer, zodat ik in het installatiescript daarna kan verwijzen.quote:Op vrijdag 12 mei 2006 13:00 schreef beerten het volgende:
[..]
Ergens in het script zit een bestandje install.php Of iets dergelijks. Daarion stel je de database gegevens in.
Met phpMyAdmin maak je een database. De database naam, inlognaam en wachtwoord geef je op in het install bestandje. Dat maakt de benodigde tabellen aan, niet de database zelf.
Er zit vast en zeker een readme bij, daar staat in hoe je het moet installeren. lees die eens door. heb je dan vragen, stel ze dan weer hier.
Huh? Ik snap van jouw probleem helemaal niets...quote:Op vrijdag 12 mei 2006 13:53 schreef big_al het volgende:
[..]
Ja dat snap ik. Ik heb nu een database aangemaakt met phpmyadmin. Maar waar zet phpmyadmin die neer, zodat ik in het installatiescript daarna kan verwijzen.
1 2 3 | $login = "loginnaam"; $pass = "wachtwoord"; |
1 2 3 4 5 6 7 | $db = mysql_connect("localhost", "inlognaam", wachtwoord") or die("Could not connect."); if(!$db) die("no db"); if(!mysql_select_db("databasenaam",$db)) die("No database selected."); ?> |
Hmm ik ben erachter waarom de query niet loopt zoals verwacht.quote:Op woensdag 10 mei 2006 22:55 schreef mooya het volgende:
Ik wil mijn zoekfunctie verbeteren door de FULL TEXT zoekfunctie..
Maar ik loop tegen een aantal vreemde resultaten aan:
Ik heb een tabel Documents waarvan de titel en inhoud FULL TEXT zijn.
Als ik de volgende query doe krijg ik niets:
[ code verwijderd ]
Maar als ik deze query heb krijg ik wel resultaten:
[ code verwijderd ]
Dus als ik zoek op 'script' krijg ik niet en met 'javascript' wel.. Hoe kan ik dit aanpassen?
En deze query loopt ook niet zoals verwacht:
[ code verwijderd ]
Ik krijg bij de resultaten documenten waarin het woord PHP helemaal niet staat (??) en de kolom PERCENT is overal 1.
Hoe kan dit? Of wat doe ik fout?
Bekijk deze pagina eensquote:Op zondag 14 mei 2006 02:05 schreef beerten het volgende:
Ik heb een array met getallen. Die wil ik graag opsplitsen per character en in een array stoppen.
Stel ik heb de string $upper = "6352781";
Ik wil hiervan een array maken.
$upper= array(6,3,5,2,7,8,1);
Dit kan niet met explode, er is geen scheidingsteken(tussen de characters). Nu zou ik het ook via een soort van loop kunnen doen, en dan met substr() en een teller character voor character in een array stoppen. Maar dit moet anders kunnen. Welke functie kan dit? Hoe flik ik 'm dit?
1 2 3 4 5 6 7 8 9 10 | $str = '1234'; $arr = array(); $len = strlen($str); for ($i = 0; $i < $len; $i++) { $arr[] = intval($str{$i}); } ?> |
quote:Op zondag 14 mei 2006 02:09 schreef JeRa het volgende:
[..]
Bekijk deze pagina eenswel PHP5 only.
Een andere methode is idd de string aflopen zoals dit:
[ code verwijderd ]
Dat kun je beter met Javascript oplossen:quote:Op zondag 14 mei 2006 19:21 schreef wobbel het volgende:
Ik kan redelijk PHPen maar ik weet niet hoe ik moet beginnen bij het volgende:
Ik wil een plattegrond maken (1 jpeg als achtergrond) en daarop kan iedereen een locatie kiezen (dmv. een <map>/<area>). Hetzelfde systeem dus als http://tent75.nl/index/map/
Maargoed....hoe zorg ik ervoor dat als ik ergens op het plaatje klik mijn positie wordt vastgelegd en wordt opgeslagen in de MySQL DB?
http://www.w3.org/TR/html401/interact/forms.html#h-17.4.1quote:Op zondag 14 mei 2006 19:47 schreef wobbel het volgende:
Ik kan elke pixel wel een eigen area geven, maar bij 50.000 pixels zal de gemiddelde browser zo'n beetje crashen denk ik
Hee, dat is nog makkelijkerquote:Op zondag 14 mei 2006 23:12 schreef the_disheaver het volgende:
[..]
http://www.w3.org/TR/html401/interact/forms.html#h-17.4.1
En onder 'image'.
Het zou de coordinaten door moeten zenden van de plaats waar geklikt is.
En daar kun je vervolgens iest mee php'en
Hij werkt eindelijkquote:Op vrijdag 12 mei 2006 15:54 schreef beerten het volgende:
[..]
Huh? Ik snap van jouw probleem helemaal niets...
Post het stukje installatiescript eens waar je de gegevens in moet vullen.
Ik neem aan dat je databaseserver en de webserver op dezelfde computer staan? Dan is de locatie "localhost" je krijgt zoiets als onderstaand stukkie code.
Of zoiets als
[ code verwijderd ]
[ code verwijderd ]
Volgens mij werkt dat niet in FireFox, die geeft alleen de naam en value van het input field mee, en niet de x en y lokatie waar geklikt is.quote:Op zondag 14 mei 2006 23:12 schreef the_disheaver het volgende:
[..]
http://www.w3.org/TR/html401/interact/forms.html#h-17.4.1
En onder 'image'.
Het zou de coordinaten door moeten zenden van de plaats waar geklikt is.
En daar kun je vervolgens iest mee php'en
1 2 3 4 5 6 7 8 9 10 11 12 13 | for ($i = 1; $i <= imap_num_msg($mbox); $i++){ $header = imap_headerinfo($mbox, $i, 80, 80); $mailinfo = mail_array($header); //**knip** if(!imap_status($mbox, $parsedir, SA_ALL)){ //kijken of de mailbox INBOX.parsed bestaat imap_createmailbox($mbox, imap_utf7_encode($parsedir)); //zoniet dan aanmaken } imap_mail_move($mbox, $i, 'INBOX.parsed'); //klopt dit wel? } ?> |
1 2 3 | VALUES ($naam, $buurt, $bericht)"; mysql_query($sql)or die ("fout"); |
Welke foutmedling?quote:Op maandag 15 mei 2006 18:53 schreef timbastiaansen het volgende:
[ code verwijderd ]
Ziet hier iemand een fout in, ik krijg iig wel een foutmelding![]()
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |