Mja, maar dat lijkt me een uitzondering?quote:Op dinsdag 1 juli 2008 19:39 schreef HuHu het volgende:
Je kunt best live development doen op het moment dat het product toch nog niet gebruikt wordt. Zo heb ik pas een site "live" gemaakt, aangezien er toch nog geen bezoekers kwamen. En nu, in de beginfase, met 10 bezoekers per dag kan ik ook nog best live dingen fixen. Zodra het echt druk wordt kan dat niet meer natuurlijk, maar tot die tijd is er geen probleem.
Je kunt een site ook semi-live zetten, zoals ik dat altijd doe. Op mijn eigen server een subdomein aanmaken zodat de klant ten alle tijden kan checken hoe het staat met de ontwikkeling. Of op de server van de klant onder een bepaald subdomein. Het kan allemaal. Maar direct live op de plek waar het resultaat dient te komen, lijkt me idd een slecht plan.quote:Op dinsdag 1 juli 2008 20:28 schreef Xcalibur het volgende:
De laatste post:
[..]
Mja, maar dat lijkt me een uitzondering?
En waarom zou je dat dan doen, als je voor de rest van je sites wel een development (lokaal) en testomgeving hebt?
Overigens wordt het op die manier ook wel hoogst onduidelijk wanneer de site nou "live" is, en wanneer jij dus klaar bent met je werk en wat er meerwerk is.... Live ontwikkelen lijkt me eigenlijk in alle opzichten een slecht idee
quote:
Ben met xdebug icm Kcachegrind aan de gang gegaan:quote:Op dinsdag 1 juli 2008 21:10 schreef slakkie het volgende:
Vraagje, iemand hier die een goede HTML parser kent? Ik gebruik momenteel simple_html_dom.php hiervoor, maar ik heb last van een memory issue en ik wil even uitsluiten dat het door deze parser komt.
Uiteraard zijn ervaringen over PHP code profilers en debuggers (open source, linux) meer dan welkom.
quote:Hallo,
Ik vraag me af of het volgende mogelijk is.
Ik heb een flash/php applicatie gemaakt. en dit draait op een pc die door mij uitgegeven wordt. dus waar ik in principe alles op kan aanpassen/installeren.
Nu heb ik 1 hoofdflash movie die bestaat uit losse 'kleine' flash movies die met elkaar communiceren. eerst was het mijn bedoeling dat ik de losse flash movies op de server wel ging updaten indien mogelijk. maar flash laat dit dus niet toe.
Dus nu heb ik een soort van update script nodig. die de flash bestanden kopieert naar de HD van de pc. als het even kan moet dit 'onzichtbaar' gebeuren.
met .NET weet ik dat dit kan. (httppost oid?) nu dus de vraag. kan dit met PHP ook?
Alvast bedankt!
Koppeltabellen zijn redelijk gemeengoed in (genormaliseerde) databasesquote:Op donderdag 3 juli 2008 00:34 schreef Wouser het volgende:
Hmmm hmmmmmmmmmmm weet je wat ik moet hebben een tabel met een artikel-id en een tag-id![]()
bedanktwas er zelf niet opgekomen
Nou, zelf wat input en moeite erin stoppen zou gewaardeerd worden.quote:Op donderdag 3 juli 2008 09:36 schreef insomaniak het volgende:
Is dit ook het goede topic om scriptjes aan te vragen??
Echt als ik zou kunnen, zou ik meteen aan de slag gaan...quote:Op donderdag 3 juli 2008 09:56 schreef Scorpie het volgende:
[..]
Nou, zelf wat input en moeite erin stoppen zou gewaardeerd worden.
Helaas, het vragen van dit soort services, dat mag nietquote:Op donderdag 3 juli 2008 10:02 schreef insomaniak het volgende:
[..]
Echt als ik zou kunnen, zou ik meteen aan de slag gaan...![]()
Helaas heb ik er zelf echt geen bal verstand van maar zou wel iets willen wat gebruiksklaar is.
Ik ben ook bereid ervoor te betalen
Volgens mij is een primary key al een index op zichzelf, maar kan me vergissen.quote:Op donderdag 3 juli 2008 10:29 schreef Chandler het volgende:
Kleine vraag m.b.t instellen van index van tabellen.
Ik heb een tabel met de volgende gegevens.
id - auto incr
datum - date
tekst - varchar 128
hits - int
nu staat ID op primary, maar wil eingeljk ook het ID geindexeerd hebben, als ik ID als index neerzet krijg ik de melding van PhpMyAdmin dat dit eingelijk niet mag.
Hoe los ik dit op? moet ik id van primary afhalen en er een index van maken of hoe lossen jullie dit op?
Issue is fixed, circular references geven de garbage collection van PHP problemen (memory wordt nooit vrijgemaakt indien je een circular reference gebruikt). Dat moet je oplossen door unset() te gebruiken.... En voorlopig gaan ze deze bug in PHP ook nog niet oplossen.quote:Op woensdag 2 juli 2008 12:37 schreef slacker_nl het volgende:
Ben met xdebug icm Kcachegrind aan de gang gegaan:
De zut die voor problemen zorgt:
http://www.euronet.nl/users/wesleys/wic/WicMassgate.png
Voor zover ik kan zien is het de dom_parser die inderdaad voor problemen zorgt. Hoewel mijn functies veel "kosten" zie je dat de kosten vooral terecht komen in de bewuste parser.. Wat ik ertegen kan doen is een andere vraag...
Dit is overigens de bewuste parser: http://simplehtmldom.sourceforge.net/
1 2 | RewriteRule ^rewrite/(.*)/(.*)/ rewrite.php?id=$1&pid=$2 |
1 2 3 | echo $_GET['id']; ?> |
Verder staat AllowOverride ook goed:quote:Loaded Modules core mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_autoindex mod_cgi mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_rewrite mod_setenvif mod_status
quote:<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>
Welke slashes? En waarom?quote:Op donderdag 3 juli 2008 14:09 schreef Xcalibur het volgende:
@Chandler: de primary key is inderdaad een index
@Saban: ik denk dat je de slashes moet escapen
Probeer het eens met ^/rewrite/(.+)/(.+)/quote:Op donderdag 3 juli 2008 13:59 schreef saban het volgende:
Ik heb een probleem met mod_rewrite (wilde hier heen apart topic voor openen).
De bestanden:
.htaccess
[ code verwijderd ]
In Perl is dit "redelijk" makkelijk te doen.quote:Op donderdag 3 juli 2008 13:44 schreef ursel het volgende:
Zijn er misschien nog andere suggesties om via een automatisch process een excel file te converteren naar CSV, waarbij de format zoals ze in excel zijn ingevoerd bewaard blijven?
Probleem is al opgelost;quote:Op donderdag 3 juli 2008 15:21 schreef slakkie het volgende:
[..]
Probeer het eens met ^/rewrite/(.+)/(.+)/
En ik kan het niet vaak genoeg herhalen, enable je RewriteLog en zet je loglevel lekker hoog, dan zie je precies waar het fout gaat in je rewrite
1 2 3 4 | FROM blog, tagcloud INNER JOIN blogtag ON tagcloud.id = blogtag.tag_id |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ( [0] => Array ( [title] => Test Title [subtitle] => Test Subtitle [date] => 2008-07-03 [content] => This is a test message for my system. [name] => Internet ) [1] => Array ( [title] => Test Title [subtitle] => Test Subtitle [date] => 2008-07-03 [content] => This is a test message for my system. [name] => FOK ) ) |
1 2 3 4 5 6 7 8 9 10 11 12 | ( [title] => Test Title [subtitle] => Test Subtitle [date] => 2008-07-03 [content] => This is a test message for my system. [tag] => array ( [0] => Internet [1] => FOK ) ) |
dat zul je zelf in php moeten gaan regelen, mysql kan veel maar arrays in arrays teruggeven gaat gewoonweg niet.quote:Op donderdag 3 juli 2008 20:19 schreef Wouser het volgende:
Nou ik ben dus verder gegaan met mijn tagcloud en heb nu zeg maar dus 3 tabellen.
1 tabel voor mijn blogs. ID, titel, subtitel, datum, content.
1 tabel voor mijn tags. ID, naam.
1 tabel voor de relatie tussen blogs en tags heb ik blogtag genoemd en bevat blog_id en tag_id.
Nu wou ik dus een query maken waarbij ik dus gelijk mijn blog en tag kan selecteren nu was ikzelf op dit gekomen...
[ code verwijderd ]
en ik krijg dan als resultaat...
[ code verwijderd ]
Alleen wou ik dit eigenlijk niet hebben had me eigenlijk liever zoiets hebben...
[ code verwijderd ]
Iemand die me wilt helpen?
ps. en volgens mij krijg ik wanneer ik meer blogs ga toevoegen ook straks problemen met de tags...
1 2 3 4 5 6 7 8 9 | ( [title] => Test Title [subtitle] => Test Subtitle [date] => 2008-07-03 [content] => This is a test message for my system. [tag1] => Internet [tag2] => FOK ) |
Nja. Tenzij je een harde beperking hebt op het aantal tags per blog (bijv. 'nooit meer dan 3 tags') zou ik het je sterk afraden. Je moet je nl. realiseren dat elke Tag1, Tag2, etc. een aparte kolom wordt. Voor de meeste blogs zul je de helft van de kolommen niet gebruiken, en als je een blog hebt met toevallig een tag meer, dan past 'ie niet in de resultset. Slecht plan.quote:Op donderdag 3 juli 2008 20:38 schreef Wouser het volgende:
Ok dan weet ik dat maar is bijvoorbeeld zoiets:
[ code verwijderd ]
dan ook niet mogelijk?
Niet met alleen MySQL. Het kan wel als je vooraf precies weet hoeveel tags een item heeft, maar dan heb je geen nette oplossing.quote:Op donderdag 3 juli 2008 20:38 schreef Wouser het volgende:
Ok dan weet ik dat maar is bijvoorbeeld zoiets:
[ code verwijderd ]
dan ook niet mogelijk?
Trouwens, nog even een wat meer algemere opmerking over wat mogelijk is en wat niet: onthoud dat voor zowel een tabel als een resultset (= het resultaat van een SQL query) het volgende geldt: Het kan een variabel aantal rijen hebben, maar het heeft altijd een vast aantal kolommen. Dit is ook logisch als je bedenkt dat rijen geen naam hebben, maar kolommen wel.quote:Op donderdag 3 juli 2008 20:38 schreef Wouser het volgende:
Ok dan weet ik dat maar is bijvoorbeeld zoiets:
[ code verwijderd ]
dan ook niet mogelijk?
^rewrite/(.*)/(.*)/?quote:Op donderdag 3 juli 2008 20:00 schreef saban het volgende:
[..]
Probleem is al opgelost;
Mijn .htaccess klopte, echter moest MultiViews uitstaan.
Nu stuit ik aan op een ander probleem:
De link mag geen slash aan het eind bevatten, hoe filter ik op een makkelijke manier de laatste slash (indien die er is) eruit.
Ipadres koppelen idd. Dat is de enige manier waarop je de gebruiker nog enigzins uniek kan identificeren.quote:Op zaterdag 5 juli 2008 09:31 schreef splendor het volgende:
Ik ben al een tijdje bezig met een soort framework waarop ik al mijn sites ga bouwen en ik ben nu mijn oude cookie login onder de loep aan het nemen, maar volgens mij is het niet erg veilig.
Op dit moment als iemand bij het inloggen kiest voor [v] Remember me, dan worden de loginnaam en het password (in md5) bij de gebruiker als cookie opgeslagen. Komt de gebruiker op een willekeurig moment met een nieuwe sessie weer op mijn site, dan zal hij aan de hand van die gegevens de gebruiker inloggen.
Het probleem hiervan is alleen, dat zodra iemand die cookie weet te stelen, hij op naam van die persoon kan inloggen.
Hoe is dit goed op te lossen?
Een mogelijkheid is om het IP adres erbij op te slaan, maar dan sluit ik de groep met een dynamic IP adres uit. Of is dit toch zoals veel websites het doen?
Ik heb overigens op google al wat rond gekeken, maar ik kreeg stukken code waarin werd gecontroleerd op login OF password en dan mocht je inloggen.
1 2 3 4 5 6 7 8 9 10 11 | if (empty($naam)) { die('Naam niet ingevuld'); } if (empty($email)) { die('Email niet ingevuld'); } if (empty($vraag)) { die('U heeft geen vraag ingevuld!'); } ?> |
Je kan ook je meldingen in een variabelle opvangen en de variabelle in de die zetten.quote:Op dinsdag 8 juli 2008 09:57 schreef Flaccid het volgende:
Ik heb ff een eventueel noob vraagje:
Ik heb 3 vars, die wil ik checken of ze leeg zijn:
[ code verwijderd ]
Ik wil eigenlijk dat hij pas "died" nadat hij heeft gecheckt of er een vraag is ingevuld. Moet ik daar dan één groot If Else blok van maken?
1 2 3 4 5 6 | onclick=\"window.open('$file', 'Title')\; return false\">origineel</a> )\">n <img style=\"border-color:#000000\; border=2\; margin-right: 30px\;margin-bottom: 30px\;\" alt=\"Title\" title=\"title\" src=\"$file\"></a>n\"; |
Volgens mij zit je een beetje te hannessen met je enkele en dubbelle quootjesquote:Op dinsdag 8 juli 2008 13:42 schreef tim2308 het volgende:
Hallo,
Ik ben bezig met een galerie waarbij de PHP code de bestanden zelf opzoekt (a la http://www.yeuxmarrons.com - maar daar gebruik ik de FlickAPI voor) waar ik de volgene code gebruik
[ code verwijderd ]
Maar ik krijg dan de foutmelding
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/yeuxmarrons.com/www/photos/agnieska/images/default.php on line 74
Met mijn domme hoofd dacht ik dat het volstond om een backslash voor de puntkomma te zetten, maar dat werkt dus niet. Wie weet raad????
wel binnen single quotes in dubbel quotesquote:Op dinsdag 8 juli 2008 15:26 schreef Xcalibur het volgende:
Dit: '$file'
gaat sowieso niet werken trouwens.... binnen single quotes worden geen variabelen gereplaced
Dit moet worden:quote:Op dinsdag 8 juli 2008 13:42 schreef tim2308 het volgende:
Hallo,
Ik ben bezig met een galerie waarbij de PHP code de bestanden zelf opzoekt (a la http://www.yeuxmarrons.com - maar daar gebruik ik de FlickAPI voor) waar ik de volgene code gebruik
1
2
3
4
5
6cho "<a style=\"color:#2f2f2f\;\" rel=\"lightbox[roadtrip]\" href=\"$file\" Title=\"<B>Title<B> <BR> Gebruik de pijltjestoetsen.. <BR>( <a href=<\"$file\"\; rel=\"lightbox\"
onclick=\"window.open('$file', 'Title')\; return false\">origineel</a> )\">n
<img style=\"border-color:#000000\; border=2\; margin-right: 30px\;margin-bottom: 30px\;\" alt=\"Title\"
title=\"title\" src=\"$file\"></a>n\";
Maar ik krijg dan de foutmelding
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /home/yeuxmarrons.com/www/photos/agnieska/images/default.php on line 74
Met mijn domme hoofd dacht ik dat het volstond om een backslash voor de puntkomma te zetten, maar dat werkt dus niet. Wie weet raad????
1 2 3 4 5 6 7 | # Maar je kan beter dit proberen: $onclick = sprintf('window.open("%s", "Title"); return false>origineel</a>', $title); # of $onclick = 'window.open(". $title . '", "Title"); return false>en meer'; |
ik denk dat je dan onbewust de echte fout eruit hebt gehaald. Want ik zie niet in hoe een echo van een puntkomma fouten zou moeten opleveren.quote:Op dinsdag 8 juli 2008 23:43 schreef tim2308 het volgende:
Merci voor jullie hulp. Uiteindelijk heb ik het opgelost door ".chr(59)." toe te voegen op de plaatsen waar een puntkomma stond en het werkt...
Onjuist, de puntkomma's die het einde van de regel aangeven staan buiten de quotes/dubbele quotes:quote:Op woensdag 9 juli 2008 11:04 schreef tim2308 het volgende:
Ik dacht dat de puntkomma's in de echo verward werden met de puntkomma's die het einde van de regel aangeven, zodat alles na de eerste puntkomma niet meer wordt geinterpreteerd.
1 |
Van GIF/JPG naar PNG bedoel je? Dan moet je er wel rekening mee houden dat PNG altijd groter is dan GIF.quote:Op donderdag 10 juli 2008 16:19 schreef Chandler het volgende:
Idd
Ik zal eens kijken wat ik hier mee kan.
Een andere vraag; is het mogelijk om middels php een afbeelding te converteren van GIF/JPG te converteren zonder dat het bestand x10 groter wordt. zoals nu het geval is.
bv $im = loadGIF("plaatje.gif"); imagePNG($im, "plaatje,gif", 9, FILTERS_ALL);anyone?
Hoe kom je daar bijquote:Op donderdag 10 juli 2008 18:25 schreef Light het volgende:
Dan moet je er wel rekening mee houden dat PNG altijd groter is dan GIF.
Dat ligt er natuurlijk maar helemaal aan wat voor soort plaatje het is. Een simpel gifje met veel egale vlakken zal waarschijnljik groter zijn als png bestand, maar een gedetailleerde foto in gif formaat zal meestal groter zijn dan dezelfde foto in png formaat.quote:
SELECT LAST_INSERT_ID();quote:Op vrijdag 11 juli 2008 10:03 schreef Chandler het volgende:
Ik had een jpgje van 56KB omgezet middels bovenstaande code naar PNG en kwam op een bestand uit van ruim 250KB!? beetje te gek vind ik zelf
En heeft iemand een link naar een tutoriaal over replce into etc want als ik via google zoek en de comments lees wordt ik er niet echt heel veel wijzer van
Ik wil namelijk het volgende.
Kijk of ip adres bestaat?
-- Ja --> lees ID
-- Nee -> insert data -> return ID
het gaat mij alleen om het terug gegeven ID
Wel als je aan het inserten bent, want ID`s zijn per definitie auto-increment keys. Whats the use otherwise?quote:Op vrijdag 11 juli 2008 12:34 schreef Chandler het volgende:
@ursel, het ID hoeft dus niet per defenitie de laatste ID te zijn
Volgens jouw beschrijving :quote:Op vrijdag 11 juli 2008 12:34 schreef Chandler het volgende:
@ursel, het ID hoeft dus niet per defenitie de laatste ID te zijn
Dat is logisch. Jpeg is lossy, png is lossless. Png en gif zijn geschikt voor plaatjes met weinig verschillende kleuren. Jpeg is geschikt voor plaatjes met veel verschillende kleuren waarbij het niet erg is als er kleine foutjes geintroduceerd worden.quote:Op vrijdag 11 juli 2008 10:03 schreef Chandler het volgende:
Ik had een jpgje van 56KB omgezet middels bovenstaande code naar PNG en kwam op een bestand uit van ruim 250KB!? beetje te gek vind ik zelf
Gewoon die replace into gebruiken... Maar hoe ziet je code eruit, want ik snap niet echt wat er fout kan gaan met deze queries.quote:Op vrijdag 11 juli 2008 14:35 schreef Chandler het volgende:
Ik heb bv een tabel met ip adressen
10 10.10.10.1
11 10.10.10.2
12.10.10.10.3
Nu wil ik kijken of een ip adres bestaat, zo niet gelijk toevoegen.
SELECT id FROM ip WHERE ip='10.10.10.4'
MySQL returned 0 oftewel geen ID gevonden
Daarna doe ik een insert (ip) maar krijg een error dat 10.10.10.4 wel bestaat, raar!? deze stond er net nog niet in!
Dus genereerd mijn script een fout.
Wat wil ik nu? een manier vinden voor het voorkomen van dit probleem, een IF NOT EXISTS INSERT oid en daarna het ID van dit ip adres uitlezen, afvangen.
Hopelijk ben ik nu duidelijker.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | Query OK, 0 rows affected (0.05 sec) mysql> insert into ip (ip) VALUES ('10.0.0.1'); Query OK, 1 row affected, 1 warning (0.03 sec) mysql> insert into ip (ip) VALUES ('10.0.0.2'); ERROR 1062 (23000): Duplicate entry '0' for key 1 -- drop table ip mysql> create table ip ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ip TEXT ); Query OK, 0 rows affected (0.00 sec) mysql> insert into ip (ip) VALUES ('10.0.0.2'); Query OK, 1 row affected (0.00 sec) mysql> insert into ip (ip) VALUES ('10.0.0.2'); Query OK, 1 row affected (0.00 sec) mysql> insert into ip (ip) VALUES ('10.0.0.2'); Query OK, 1 row affected (0.00 sec) |
Gewoon, ruim binnen de 10240 bytes en nooit zin gehad om het gevonden plaatje aan te passen.quote:Op donderdag 10 juli 2008 22:25 schreef SuperRembo het volgende:
En Light, waarom is je usericon een jpeg?
Wat raad je me aan dan? hoe kan ik toch zorgen dat deze afbeeldingen kleiner worden?quote:Op vrijdag 11 juli 2008 18:23 schreef SuperRembo het volgende:
[..]
Dat is logisch. Jpeg is lossy, png is lossless. Png en gif zijn geschikt voor plaatjes met weinig verschillende kleuren. Jpeg is geschikt voor plaatjes met veel verschillende kleuren waarbij het niet erg is als er kleine foutjes geintroduceerd worden.
Helaas, het heeft niets te maken met autoincrement, er staan namelijk al meer dan 40.000 ip adressen in deze tabel waarbij dit probleem af en toe voorkomtquote:Op vrijdag 11 juli 2008 18:42 schreef slakkie het volgende:
[..]
Gewoon die replace into gebruiken... Maar hoe ziet je code eruit, want ik snap niet echt wat er fout kan gaan met deze queries.
Never mind, ben erachter wat je fout mogelijk kan zijn:
[ code verwijderd ]
Maw, check je table ff, denk dat daar de fout in zit, en niet in je php/mysql code in je script.
Check je indexen eens....quote:Op zaterdag 12 juli 2008 09:33 schreef Chandler het volgende:
[..]
Wat raad je me aan dan? hoe kan ik toch zorgen dat deze afbeeldingen kleiner worden?
[..]
Helaas, het heeft niets te maken met autoincrement, er staan namelijk al meer dan 40.000 ip adressen in deze tabel waarbij dit probleem af en toe voorkomt
Waarschijnlijk doordat het script 2x op bijna dezelfde tijd geladen wordtoid?
Wat voor plaatje is het dan, en moet het wel kleiner dan 50 kb? Je kunt ook GIF proberen, of de kwaliteit wat naar beneden zetten ofzo.quote:Op zaterdag 12 juli 2008 09:33 schreef Chandler het volgende:
[..]
Wat raad je me aan dan? hoe kan ik toch zorgen dat deze afbeeldingen kleiner worden?
1 2 3 4 5 6 7 | `id` int(11) NOT NULL auto_increment, `ip` varchar(15) NOT NULL, `hostname` varchar(128) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `ip_2` (`ip`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=18371 |
Ik had de compressie al op 9 gezet maar dat werkte ook niet echtquote:Op zaterdag 12 juli 2008 10:08 schreef Light het volgende:
Wat voor plaatje is het dan, en moet het wel kleiner dan 50 kb? Je kunt ook GIF proberen, of de kwaliteit wat naar beneden zetten ofzo.
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 | $img = "image.jpg"; $img_new = "image.png"; // first test $im = imagecreatefromJPEG($img); $im_new = imagecreatetruecolor(imagesx($im), imagesy($im)); imagecopyresampled ( $im_new, $im, 0, 0, 0, 0, imagesx($im), imagesy($im), imagesx($im), imagesy($im)); imagePng($im_new, $img_new, 9); echo 'Org:' . filesize($img) . " - new: " . filesize($img_new) . '<br />'; echo '<img src="' . $img_new . '"><br />'; unset($im); unset($im_new); // second test $im = imagecreatefromJPEG($img); imagePng($im, $img_new, 9); echo 'Org:' . filesize($img) . " - new: " . filesize($img_new) . '<br />'; echo '<img src="' . $img_new . '"><br />'; unset($im); unset($im_new); // third test $im = imagecreatefromJPEG($img); $im_new = imagecreate(imagesx($im), imagesy($im)); imagecopyresampled ( $im_new, $im, 0, 0, 0, 0, imagesx($im), imagesy($im), imagesx($im), imagesy($im)); imagePng($im_new, $img_new, 9); echo 'Org:' . filesize($img) . " - new: " . filesize($img_new) . '<br />'; echo '<img src="' . $img_new . '"><br />'; unset($im); unset($im_new); // 4th test // third test $im = imagecreatefromJPEG($img); $im_new = imagecreate(imagesx($im), imagesy($im)); imagecopy ( $im_new, $im, 0, 0, 0, 0, imagesx($im), imagesy($im)); imagePng($im_new, $img_new, 9); echo 'Org:' . filesize($img) . " - new: " . filesize($img_new) . '<br />'; echo '<img src="' . $img_new . '"><br />'; unset($im); unset($im_new); ?> |
Dat laatste zal het wel zijn dan maar wij kunnen niet zien waar en wanneer dat script aangeroepen wordt.quote:Op zaterdag 12 juli 2008 09:33 schreef Chandler het volgende:
Helaas, het heeft niets te maken met autoincrement, er staan namelijk al meer dan 40.000 ip adressen in deze tabel waarbij dit probleem af en toe voorkomt
Waarschijnlijk doordat het script 2x op bijna dezelfde tijd geladen wordtoid?
[edit]quote:Op zaterdag 12 juli 2008 11:12 schreef Chandler het volgende:
Net even een compressie scriptje geschreven, valt me mee qua comprimeren (3e en 4e test)
Maar iemand nog een duidelijke tutoriaal over on replace?quote:Op zaterdag 12 juli 2008 11:14 schreef Farenji het volgende:
Dat laatste zal het wel zijn dan maar wij kunnen niet zien waar en wanneer dat script aangeroepen wordt.
Omdat ik graag binnen het systeem 1 bestandstype support. Of is dit onzin?quote:Op zaterdag 12 juli 2008 12:03 schreef SuperRembo het volgende:
[edit]
Wat wil je hier nou mee testen/aantonen? Png en jpeg hebben ieder hun eigen toepassing. Waarom moet het per see png worden?
Je zou eens hier of hier kunnen kijken.quote:Op zaterdag 12 juli 2008 13:19 schreef Chandler het volgende:
[..]
Maar iemand nog een duidelijke tutoriaal over on replace?
Het voegt niets toe in vergelijking met het ondersteunen van gif/jpg/png.quote:Omdat ik graag binnen het systeem 1 bestandstype support. Of is dit onzin?
Ja, tijd voor een andere aanpak.quote:Op zaterdag 12 juli 2008 14:59 schreef Chandler het volgende:
Ik heb even de insert gelezen maar wil eingelijk bij duplicate niets doen... helaas ben ik denk ik verplicht om een veld aan te passen oid
Liefst zou ik gewoon bij een ON DUPLICATE niets doen, maar dan krijg ik ook niets terug met LAST_INSERT_ID()
Anyone suggesties?
Kan je on duplicate niet de bestaande rij updaten met dezelfde waarde?quote:Op zaterdag 12 juli 2008 14:59 schreef Chandler het volgende:
Ik heb even de insert gelezen maar wil eingelijk bij duplicate niets doen... helaas ben ik denk ik verplicht om een veld aan te passen oid
Liefst zou ik gewoon bij een ON DUPLICATE niets doen, maar dan krijg ik ook niets terug met LAST_INSERT_ID()
Anyone suggesties?
en als je nou vier TINYINT's doetquote:Op maandag 14 juli 2008 12:16 schreef Chandler het volgende:
Ik heb net even een opzetje gemaakt met 25000 ip adressen
met varchar 16 heb ik 2,5MB aan data
met unsigned int (10) heb ik 1,6MB aan data
invoeren met inet_atom en uitlezen met inet_ntoa
Helaas kon ik niet een groot verschil met uitlezen ziendaarvoor had ik nog te weinig ip adressen.
quote:
1 2 3 4 | FROM phpbb_topics tpc, phpbb_posts p, portfolios pf WHERE tpc.topic_id=pf.id AND p.post_id = tpc.topic_first_post_id ORDER BY tpc.topic_first_poster_name ASC, pf.rating DESC LIMIT 50 |
quote:Another way to use GROUP BY or ORDER BY on a BLOB or TEXT column containing long values when you want more than max_sort_length bytes to be significant is to convert the column value into a fixed-length object. The standard way to do this is with the SUBSTRING() function. For example, the following statement causes 2000 bytes of the comment column to be taken into account for sorting:
mysql> SELECT id, SUBSTRING(comment,1,2000) FROM t
-> ORDER BY SUBSTRING(comment,1,2000);
Als je een odbc aanmaakt vind hij je sql dan welquote:Op maandag 14 juli 2008 11:38 schreef bobsqaud het volgende:
Heb nu SQL server 2005 draaien en nu wil het dat ik met acces gegevens daar vanaf wil halen maar acces kan SQL gewoon niet vinden. Ik gebruik Office 2003 met Windows XP.
topic_first_poster_name is een blob? Welke idioot heeft dat bedachtquote:Op maandag 14 juli 2008 23:03 schreef ralfie het volgende:
Terwijl ik dit typ bedenk ik mij dat in phpbb3 (wat ik aan het modden ben) de waarde die ik ORDER als BLOB opslaat.
in phpbb3 zijn zo'n beetje alle strings van niet-vaste waarde een BLOB. Geen wonder dat het forum zo traag als dikke stront isquote:Op dinsdag 15 juli 2008 08:11 schreef SuperRembo het volgende:
[..]
topic_first_poster_name is een blob? Welke idioot heeft dat bedacht
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <head> <title>Really Simple CMS</title> </head> <body> <h1>Really Simple CMS</h1> <?php mysql_connect("bla", "bla", "bla"); $result = @mysql_query("SELECT contents from bla"); while ($row = mysql_fetch_assoc($result)){ $contents = $row['contents']; } ?> <form name="form1" method="post" action="updatepage.php"> Enter page content:<br><textarea rows="10" cols="60" name="contents"><?php echo "$contents" ?></textarea> <input type="submit" name="Submit" value="Update Page"> </form> </body> </html> |
wat wil je ermee gaan doen? als je een soort van nieuwspagina wil maken zit je al gauw aan wat ingewikkeldere code, een kant-en-klaar CMS kan dan makkelijker voor je zijn.quote:Op dinsdag 15 juli 2008 17:37 schreef Mirel het volgende:
Hallo, met Mirel, php kleuter.
Ik wil voor een website een soort van text editor hebben, waarin je je allemaal dingen typt, en die op een pagina worden gezet. Heb een héél simpele tutorial gevonden die ik heb gedaan en hier even geupload om te testen.
Wat ie nu doet is tekst op een pagina zetten, maar als je nieuwe tekst erop typt, dan wist ie de andere uit. Wat moet ik in de code toevoegen dat ie dat niet doet?
[ code verwijderd ]
Of moet ik nu iets totaal anders doen, ben echt een php leek.![]()
Ik lees nu ondertussen iets over kant en klare WYSIWYG editors waarmee waarschijnlijk hetzelfde bereikt kan worden, weet iemand daar iets meer over te vertellen?
Ja ik zie het nu ook pas. :'0quote:Op dinsdag 15 juli 2008 18:52 schreef Xcalibur het volgende:
Je probleem met het kwijtraken van de tekst snap ik niet, ik krijg de tekst die in het venster staat. Als je die weghaalt, is ie weg, als je em laat staan blijft ie staan... beetje wat je zou verwachten zeg maar
Wat betreft de WYSIWYG editor: kijk eens op http://tinymce.moxiecode.com of zoek eens naar FCKeditor
Het opslaan van de pagina gebeurt in updatepage.php en die heb je niet gepost. Het is heel simpel om ipv tekst te vervangen iets toe te voegen. Waarschijnlijk zou je dat door updatepage.php te bekijken in combinatie met de pagina die je hebt gepost, en wat basis SQL kennis, gewoon door het betere copy/paste werk best zelf voorelkaar kunnen krijgen, maar als dat echt niet lukt, post het script hier ff, het is nl een kleine aanpassing.quote:Op dinsdag 15 juli 2008 19:12 schreef Mirel het volgende:
Het is voor een website die ik beheer, en het betreft één pagina ja.
[..]
Ja ik zie het nu ook pas. :'0
1 2 3 4 5 6 7 8 9 10 | {loop=%express%} {if %express%==1} laat dit zien {/if} {if %express%==2} laat dit zien {/if} {/loop} {/ifset} {ifset %test%} {ifset %testobject} yes {/ifset} {/ifset} |
1 2 3 4 5 6 7 | if (isset ($express)) { $loop = $express; if ($express == 1) { echo "brul 1"; } if ($express == 2) { echo "brul2"; } } ?> |
Is dit smarty?quote:Op vrijdag 18 juli 2008 15:37 schreef Chandler het volgende:
Even een leuke vraag,
Hoe moeilijk is het om middels php stackbased te parsen?
bv
[ code verwijderd ]
Ik heb al eens een poging gedaan maar echt goed ging het niet
Zo zou het geintrepeteerd moeten wordenquote:
nee, gisteren even uit het handje geklopt. Maar de vraag is hoe je zo iets stackbased kunt parsen!?quote:Op vrijdag 18 juli 2008 17:30 schreef slakkie het volgende:
Is dit smarty?
Met een stack waarschijnlijk.quote:Op zaterdag 19 juli 2008 14:16 schreef Chandler het volgende:
[..]
Zo zou het geintrepeteerd moeten worden
[..]
nee, gisteren even uit het handje geklopt. Maar de vraag is hoe je zo iets stackbased kunt parsen!?
Kijk eens naar de parser van phpbb of gebruik gewoon het voorstel van 1DIOOT. Dat is altijd nog de snelste oplossing.quote:Op zaterdag 19 juli 2008 14:59 schreef Chandler het volgende:
Maar vertel eens hoe ik dat moet gaan aanpakken?
ik geloof niet dat iemand hier nu snapt wat je wil...quote:Op zaterdag 19 juli 2008 14:59 schreef Chandler het volgende:
Maar vertel eens hoe ik dat moet gaan aanpakken?
Ik vraag me af of hij het zelf wel snapt...quote:Op zaterdag 19 juli 2008 19:28 schreef ralfie het volgende:
[..]
ik geloof niet dat iemand hier nu snapt wat je wil...
1 2 3 | laat dit zien {/ifset} |
1 2 3 4 5 | {ifset %variabel2%} laat dit zien {/ifset} {/ifset} |
Zo'n idee had ik.quote:Op zaterdag 19 juli 2008 21:39 schreef Chandler het volgende:
Wat een onzin reacties, mocht je een beetje kennis hebben van scripten, dan zien jullie gelijk dat het om een template gaat waarin bepaalde zaken geparsed moeten worden.
Gebruik Smarty.quote:Ik heb al een tijd gezocht naar een manier om efficient een template te parsen zonder al te veel extra routines.
Zoals bij Smarty? Dat kun je gewoon gebruiken, veel makkelijker en sneller dan zelf opnieuw het wiel uitvinden.quote:Om het dus kort te houden; ik wil graag weten hoe je het beste een template kan parsen waar gekeken wordt naar de statements tussen de { en } waarbij binnen een blok een subblok mogelijk is
Ja. Je wilt Smartyquote:voorbeeld van een blok:
[ code verwijderd ]
voorbeeld van een blok in een blok
[ code verwijderd ]
beetje het zelfde als een quote in een quote dat mogelijk is op verschillende fora's.
Hopelijk heb ik mij nu wat duidelijker uitgedrukt!.
Truequote:Op zondag 20 juli 2008 11:31 schreef super-muffin het volgende:
Wat is er mist met een native PHP template?
Dat is altijd nog het snelst.
Jou post is nogal kansloos vriend, stackbased parsen zit al ruim 4 jaar in mijn hoofd maar is er nog nooit uitgekomen qua scripten.quote:Op zaterdag 19 juli 2008 23:40 schreef Farenji het volgende:
Jezus chandler wat kun je soms toch kansloos overkomen. Met je "stackbased parsen", heb je weer ergens een termpje opgevangen?
Tuurlijk, maar je kan ook gebruik maken van modules/libraries/etc om zo je eigen code base kleiner te maken/oiverzichtelijker te houden. Zo wilde ik een LDAP API maken welke OO based was, maar die bleek er al te zijn in de vorm van Net_LDAP2. Dan ga ik niet nogmaals het wiel uitvinden als mensen mij al voor zijn..quote:Op maandag 21 juli 2008 12:19 schreef Chandler het volgende:
Verder zou ik zeggen tegen iedereen die zegt dat ik het wiel niet opnieuw moet uitvinden om dan maar lekker te stoppen met scripten want volgens mij is alles al eens een keertje gemaakt.
Nou, eerlijk gezegd denk ik (ook nav je codefragmentje) een beetje dat je niet weet wat er precies met een stack bedoeld wordt (en dus ook niet waarom/wanneer het beter is dan andere manieren van parsen) maar dat je het wel interessant vindt klinken.quote:Op maandag 21 juli 2008 12:19 schreef Chandler het volgende:
[..]
Jou post is nogal kansloos vriend, stackbased parsen zit al ruim 4 jaar in mijn hoofd maar is er nog nooit uitgekomen qua scripten.
Ik heb een Windows 2003 server (2 dual cores, 6Gb) met Apache, PHP en MySQL. Hierop draait een soort van helpdesk tool op. Probleem is de webpagina van de een op de andere dag bagger traag is geworden.quote:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <dl> <dt onmouseover="javascript:montre('smenu1');"><a href="http://www.pestforum.nl/forum" target = blank>Forum</a></dt> <dd id="smenu1"> <ul> <li><a href="http://www.pestforum.nl/forum">Bezoek het forum</a></li> <li><a href="http://pestforum.nl/forum/index.php?act=Reg&CODE=00">Registreer een account</a></li> <li><a href="http://pestforum.nl/forum/index.php?showtopic=1855">Bekijk de regels</a></li> </ul> </dd> </dl> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <dl> <dt onmouseover='javascript:montre('smenu1');'><a href='http://www.pestforum.nl/forum' target = blank>Forum</a></dt> <dd id='smenu1'> <ul> <li><a href='http://www.pestforum.nl/forum'>Bezoek het forum</a></li> <li><a href='http://pestforum.nl/forum/index.php?act=Reg&CODE=00'>Registreer een account</a></li> <li><a href='http://pestforum.nl/forum/index.php?showtopic=1855'>Bekijk de regels</a></li> </ul> </dd> </dl> |
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 | <div id="menu"> <dl> <dt onmouseover="javascript:montre();"><a href="http://www.pestforum.nl" title="Terug naar de startpagina">Home</a></dt> </dl> //Lets get the menu here! include('connect.php'); $Counter = 0; $sql = "SELECT * FROM cmsmnu WHERE Mother = 0 ORDER BY Position"; $query = mysql_query($sql) or die(mysql_error()); while ($result = mysql_fetch_array($query)) { $Counter++; $MnuID = $result['ID']; $MnuText = $result['Text']; $MnuLink = $result['Link']; $MnuMother = $result['Mother']; $MnuNewPage = $result['Newpage']; $MnuTarget = ''; // Reset! If ($MnuNewPage == 1) { $MnuTarget = 'target = blank'; } echo" <dl> <dt onmouseover=\"javascript:montre('smenu$Counter');\"><a href='$MnuLink' $MnuTarget>$MnuText</a></dt> <dd id='smenu$Counter'> <ul> "; //Now check if there is a submenu for this menu, and generate it! $sql = "SELECT * FROM cmsmnu WHERE Mother = '$MnuID' ORDER BY Position"; $query = mysql_query($sql) or die(mysql_error()); while ($result = mysql_fetch_array($query)) { $MnuText = $result['Text']; $MnuLink = $result['Link']; $MnuMother = $result['Mother']; $MnuNewPage = $result['Newpage']; $MnuTarget = ''; // Reset! If ($MnuNewPage == 1) { $MnuTarget = 'target = blank'; } echo " <li><a href='$MnuLink' $MnuTarget>$MnuText</a></li>"; } echo "</ul></dd> "; } </dl> </div> ?> |
het ziet er naar uit dat je $query als mysql result overschrijft...quote:Op dinsdag 22 juli 2008 20:38 schreef LeeHarveyOswald het volgende:
Gelukt, dankjewelBen ik alleen bij het volgende probleem aanbeland...
Onderstaande code werkt, haalt info op uit een database, en tekent een menu uit. En de submenu's.
Dat gaat goed. 1x. Ik heb nl. 2 menu's in de database staan (Forum en Informatie) en ik krijg er maar 1..
Werking te zien op http://pestforum.nl/users/test.php
[ code verwijderd ]
Oh heerlijk, php, html, javascript en mysql dwars door elkaarquote:Op dinsdag 22 juli 2008 20:38 schreef LeeHarveyOswald het volgende:
Werking te zien op http://pestforum.nl/users/test.php
[ code verwijderd ]
Je hebt nu 2x praktisch dezelfde query staan. Daar kan je makkelijk 1 functie van maken die een array met menu-item data geeft. Dat maakt het een stuk leesbaarder:quote:Op dinsdag 22 juli 2008 22:03 schreef LeeHarveyOswald het volgende:
Ja, je moet wat, als je je menustructuur uit een database wilt halen en wilt laten uittekenen :D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $mainMenuItems = readMenu(0); foreach ($mainMenuItems as $item) { ++$counter; printf('<dl>...</dl>', $counter, htmlspecialchars($item['Link']), htmlspecialchars($item['Text']), ...); $subMenuItems = readMenu($item['ID']); foreach ($subMenuItems as $subItem) { printf('<li>...</li>', htmlspecialchars($subItem['Link']), htmlspecialchars($subItem['Text']), ...); } } |
Oh dat kan ook nietquote:Op dinsdag 22 juli 2008 23:59 schreef LeeHarveyOswald het volgende:
Ik snap hem niet helemaal? Hoe kan ik die 2e query dan uitsluiten, terwijl ik pas 1 stap verder weet welke subitems ik op wil halen? (kan het tijdstip zijn hoor .. )
dat werkt op zich wel, maar dat betekent wel dat die rewriterule altijd gebruikt wordt wanneer de url zelf niet bestaat, ook al is dat doordat de url parameters bevat... (ik wil namelijk alle $_GET netjes wegwerken. Dus, dit is mijn probleem:quote:Op woensdag 23 juli 2008 15:35 schreef super-muffin het volgende:
[ code verwijderd ]
Hier staat dus als de opgevraagde URL geen bestaande bestand of map is hij de RewriteRule moet pakken.
1 2 3 4 5 6 7 8 9 10 | +index.php +includes\ +test.php +deze_ook.php +dezeniet.txt +folder\ +deze_niet.gif +deze_ook_niet.php +etc. |
1 |
1 2 3 4 5 | RewriteCond %{REQUEST_URI} !-f RewriteCond %{REQUEST_URI} ^/([^/]+).*$ RewriteCond "C:/Program Files/WAMP/www/includes/$1.php" -f RewriteRule ^([^/]+)/?(.*)$ index.php?page=$1¶ms=$2 |
Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.quote:Op woensdag 23 juli 2008 22:54 schreef ralfie het volgende:
ok, ik heb al iets in elkaar geflansd, was doodsimpel eigenlijk toen ik erachter kwam dat je references vanuit vorige RewriteConds kon gebruiken...
[ code verwijderd ]
nog ff testen of het eenvoudiger kan, maar het werkt iig. toch bedankt
Beetje ongenuanceerde dit is niet portable gezeik, IMHO. Als je zooi van server A naar B gaat overzetten hoef je alleen de paden in je rewrite rule aan te passen, zo moeilijk is het niet. IIS kan zoiezo niet met rewrite rules overweg (lees mod_rewrite, aangezien IIS een andere rewrite engine heeft..), dus het gebruik van mod_rewrite is sowieso niet portable.quote:Op woensdag 23 juli 2008 23:24 schreef Light het volgende:
[..]
Zo gaat het uiteraard alleen op jouw pc werken. Dat kan genoeg zijn maar als je die site ooit eens ergens anders wilt draaien, heb je een probleem.
joh, boeiend. Ben geen commercieel pakket aan het maken, maar gewoon een amateur website aan het verfraaien. De eerste plaats waar ik instellingen mbt rewriterules ga zoeken is in een htaccess bestand, dus daar staat het goed in mijn geval. Dat dit algemeen als bad practice gezien wordt, boeiend, als het maar (goed) werkt. en dat doet het nu.quote:Op donderdag 24 juli 2008 11:17 schreef Farenji het volgende:
Ik zei niet voor niks om dit soort dingen in je applicatiecode te doen en niet met mod_rewrite, dan kun je namelijk gewoon een config bestand/class hiervoor gebruiken, zoals het hoort. Een pad aanpassen in een rewrite rule is zo gebeurd maar je wil dit soort dingen centraal, op 1 plek kunnen configureren. Als je op tig plekken allerlei paden moet gaan aanpassen voordat je app werkt, dat is gewoon bad practice.
Bedoel je de tijd die het de server kost om de html te genereren of de tijd die het de browser kost om de pagina te laden?quote:Op vrijdag 25 juli 2008 12:17 schreef Chandler het volgende:
Als ik op een bepaalde pagina met zo'n 15 queries voor't eerst klik zie ik dat de parse tijd (totaal incl queries) zo'n 1,2 seconden is.
Druk ik op F5 dan opeens is het 0,7 secs
en nogmaals op F5 en het is 0,01 secs?
Tip: Bij het laten zien (index.php) de functie nl2br() om de data (tekst) heen wrappen.quote:Op dinsdag 15 juli 2008 17:37 schreef Mirel het volgende:
Hallo, met Mirel, php kleuter.
Ik wil voor een website een soort van text editor hebben, waarin je je allemaal dingen typt, en die op een pagina worden gezet. Heb een héél simpele tutorial gevonden die ik heb gedaan en hier even geupload om te testen.
Wat ie nu doet is tekst op een pagina zetten, maar als je nieuwe tekst erop typt, dan wist ie de andere uit. Wat moet ik in de code toevoegen dat ie dat niet doet?
[ code verwijderd ]
Of moet ik nu iets totaal anders doen, ben echt een php leek.![]()
Ik lees nu ondertussen iets over kant en klare WYSIWYG editors waarmee waarschijnlijk hetzelfde bereikt kan worden, weet iemand daar iets meer over te vertellen?
Ik begrijp hieruit dat curl, indien safemode aanstaat, de locatie van de 30X message niet volgt.quote:Op vrijdag 25 juli 2008 20:58 schreef SuperRembo het volgende:
cURL ondersteunt in safe mode geen CURLOPT_FOLLOWLOCATION. Dat heb ik wel nodig. Heeft iemand daar een werkende oplossing voor?
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 | # php 5.2.1 $ch = curl_init(); $curl_opts = array(); $curl_opts[CURLOPT_VERBOSE] = 0; $curl_opts[CURLOPT_RETURNTRANSFER] = 1; function curl_sm_exec($ch, $opts, $url) { if(ini_get('safe_mode')) { $opts[CURLOPT_HEADER] = 1; $opts[CURLOPT_CUSTOMREQUEST] = "HEAD"; } $opts[CURLOPT_URL] = $url; curl_setopt_array($ch, $opts); $bla = curl_exec($ch); $arr = split("\n", $bla); foreach($arr as $v) { if (preg_match('/^Location: (.*)/', $v, $matches)) { return curl_sm_exec($ch, $opts, $matches[1]); } } $opts[CURLOPT_HEADER] = 0; $opts[CURLOPT_CUSTOMREQUEST] = "GET"; curl_setopt_array($ch, $opts); return curl_exec($ch); } $res = curl_sm_exec($ch, $curl_opts, 'www.euronet.nl'); print $res . "\n"; ?> |
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 | { static $curl_loops = 0; static $curl_max_loops = 20; if ($curl_loops++ >= $curl_max_loops) {// Maximum number of redirects exceeded $curl_loops = 0; return false; } curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); $debbbb = $data; list($header, $data) = explode("\n\n", $data, 2); $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (!($http_code == 301 || $http_code == 302)) { $curl_loops = 0; return $debbbb; } $matches = array(); preg_match('#Location:(.*?)\n#i', $header, $matches); $url = @parse_url(trim(array_pop($matches))); if (!$url) { // Couldn't process the url to redirect to $curl_loops = 0; return $data; } $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL)); if (!$url['scheme']) $url['scheme'] = $last_url['scheme']; if (!$url['host']) $url['host'] = $last_url['host']; if (!$url['path']) $url['path'] = $last_url['path']; $new_url = $url['scheme'] .'://'. $url['host'] . $url['path'] . ($url['query'] ? '?'.$url['query'] : ''); curl_setopt($ch, CURLOPT_URL, $new_url); return curl_redir_exec($ch); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | while (true) { array_push($to_unlink, $tmp_name); `convert -crop 256x256 $tmp_name ./data/$id/$levels-%d.jpg`; if ($levels == 1) break; $levels -= 1; $new_tmp_name = tempnam("./temp", $id) . ".jpg"; `convert -resize 50%x50% $tmp_name $new_tmp_name`; $tmp_name = $new_tmp_name; } foreach ($to_unlink as $name) unlink($name); `convert -resize 50%x50% ./data/$id/1-0.jpg ./data/$id/thumbnail.jpg`; header("Location: ./?edit=true&id=$id"); ?> |
1 2 3 4 5 6 7 | Warning: unlink(C:\Documents and Settings\Frank\Local Settings\Temp\7sM24A.tmp.jpg) [function.unlink]: No such file or directory in C:\xampp\htdocs\vr\add_image.php on line 55 Warning: unlink(C:\Documents and Settings\Frank\Local Settings\Temp\7sM24B.tmp.jpg) [function.unlink]: No such file or directory in C:\xampp\htdocs\vr\add_image.php on line 55 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\vr\add_image.php:55) in C:\xampp\htdocs\vr\add_image.php on line 59 |
Okéquote:Op zondag 27 juli 2008 21:20 schreef SuperRembo het volgende:
Je krijgt geen foutmeldingen maar waarschuwingen. En de eerste 3 gaan er duidelijk over dat unlink() het bestand dat verwijderd zou moeten worden niet bestaat.
Denk dat je die array_push naar to_unlink te vroeg doet, staan je bestanden in ./temp?quote:Op zondag 27 juli 2008 22:05 schreef DaFrenk het volgende:
[..]
OkéWaarschuwingen.. klopt. Maar ik heb een vermoeden dat die bestanden niet bestaan omdat de actie die hij uitvoert met "`convert" niet gedaan kan worden omdat hij iets mist?
D'oh! Er was geen "temp" mapje, nu ik die aangemaakt heb werkt het wel.quote:Op zondag 27 juli 2008 22:40 schreef slakkie het volgende:
[..]
Denk dat je die array_push naar to_unlink te vroeg doet, staan je bestanden in ./temp?
Is ook een manier. Kwam laatst ergens een quote tegen van iemand die code had gezien in de trant van:quote:Op maandag 28 juli 2008 10:38 schreef ralfie het volgende:
of @unlink(); De @ onderdrukt de waarschuwing. Neemt niet weg dat het kan zijn dan je idd door een fout die bestanden niet hebt, dus dat zou ik eerst uitzoeken.
ik doe het deelsquote:Op maandag 28 juli 2008 15:39 schreef slacker_nl het volgende:
[..]
Is ook een manier. Kwam laatst ergens een quote tegen van iemand die code had gezien in de trant van:
error_reporting(E_ALL);
@dit($dat);
@dat($dit);
@etc($etc, $etc, $etc);
Niet dat jij dit doet, maar mensen die errorreporting aanzetten en dan alles gaan @'en zijn lachwekkend
.... maar bij mij als resultaat:quote:;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; ... or under UNIX:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.
; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.
extension=php_mysql.dll
extension=php_mysqli.dll
Iemand verder nog tips?quote:1PHP Warning: PHP Startup: Unable to load dynamic library './php_mysql.dll' - The specified module could not be found. in Unknown on line 0 PHP Warning: PHP Startup: Unable to load dynamic library './php_mysqli.dll' - The specified module could not be found. in Unknown on line 0
Dat zeg ik, je moet hem in PHP/ext flikkeren..quote:Op woensdag 30 juli 2008 16:35 schreef Geqxon het volgende:
De DLL staat in de root van PHP en in ook in system32.
Maar het probleem ga ik simpeler oplossen door PHP4 te gebruiken, want daar was hij tenminste wel pre-compiled.
Je kletst dus uit je nek met je ext folder. Ik dacht al, hier klopt iets niet.quote:extension_dir = "./"
En dat terwijl 'C:\Program Files\PHP\ext\php_mysql.dll' recht voor mijn neus staat!quote:1PHP Warning: PHP Startup: Unable to load dynamic library 'C:\Program Files\PHP\ext\php_mysql.dll' - The specified procedure could not be found. in Unknown on line 0
quote:Op woensdag 30 juli 2008 16:41 schreef Geqxon het volgende:
A, kijk:
[..]
Je kletst dus uit je nek met je ext folder. Ik dacht al, hier klopt iets niet.
-------------------------------
Het probleem zit hem bij mij met name in de falende tutorials, zelfs de officieele van PHP zelf, aangezien ook die met verouderde informatie werkt.
-------------------------------
En na wat pielen:
[..]
En dat terwijl 'C:\Program Files\PHP\ext\php_mysql.dll' recht voor mijn neus staat!
Je melding geeft het anders wel default aan en je verklaart dat ik uit mijn nek lul..quote:Op woensdag 30 juli 2008 16:56 schreef Geqxon het volgende:
Waar heb je het over ursel? Je lacht me uit omdat de extensions niet in de ext directory staat, en by default bestaat die niet. Ik vind dat vreemd gedrag.
Goed, communicatie foutje. Sorryquote:Op woensdag 30 juli 2008 17:02 schreef ursel het volgende:
[..]
Je melding geeft het anders wel default aan en je verklaart dat ik uit mijn nek lul..
Verder staat het hier wel allemaal gewoon netjes in een ext folder, dus ja, om dan gelijk te roepen dat iemand uit zijn nek lult die je probeert te helpen..
Morgen verder.quote:Unable to load dynamic library 'c:\php\ext\php_mysql.dll' - The specified procedure could not be found.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | if (false){ ?> PHP doesn't work <?php } ?> <?php @mysql_connect("localhost","root","tardis"); if (@mysql_get_server_info()){ echo "PHP & MySQL both work"; } else{ echo "PHP works, MySQL doesn't"; } ?> |
1 2 3 4 | FROM tabel WHERE ip = 'IPADRES' LIMIT 1 |
1 2 3 | VALUES ('1448150902') ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), ip = '1448150902' |
Ja. Het principe heet OOP:quote:Op zaterdag 2 augustus 2008 21:04 schreef Xcalibur het volgende:
ik ga me straks of morgen eens inlezen hoe dat nou werkt met classes en extenden enzo
Ik gebruik wel classes, maar die staan altijd apart van elkaar.... Ik heb nu een wat complexer geheel waarbij ik wat algemene functies heb, en soms wat extra, specifieke, functies. Volgens mij kan ik dat mooi daarmee oplossen, zonder dat ik allerlei dubbele code krijgt.... maar het is me nog niet helemaal duidelijk
Aye en OOP is erg geil tofquote:Op zondag 3 augustus 2008 12:17 schreef Scorpie het volgende:
[..]
Ja. Het principe heet OOP:
http://en.wikipedia.org/wiki/Object_oriented
OOP is niet iets wat je uit PHP documentatie kan leren, het is een manier van ontwerpen en programmeren. Die leer je beter door een algemene tutorial over OOP door te nemen.quote:Op zondag 3 augustus 2008 16:05 schreef Xcalibur het volgende:
I know
Ik werk ook wel met classes, alleen dat extenden is nog nieuw
Heb al even in de PHP documentatie gekeken, dat ziet er vrij overzichtelijk uit...
Voor mijn statistieken systeem ala ipcounter.nl, had in mijn nieuwe systeem vaak een probleem dat een uniek veld dubbel geschreven werdt. Even om duidelijk te zijn.quote:Op maandag 4 augustus 2008 20:29 schreef slakkie het volgende:
Waarom heb je de ID's nodig?
Dat is inderdaad de bedoeling? zie je een fout gegeven dan?quote:Op maandag 4 augustus 2008 20:30 schreef slakkie het volgende:
Chandler, moet je avatar trouwens m'n browser versie en OS raden?
Zou je mij jou BROWSER informatie string willen sturen? zodat ik deze kan verwerken?quote:Op maandag 4 augustus 2008 20:45 schreef Xcalibur het volgende:
nou, dat hoop ik niet, want ik zie IE7.0 / Windows XP terwijl ik op Safari op de Mac zit
Wat betreft on duplicate: ik zou on duplicate gebruiken, dan doe je in 1 query wat je anders in 2 queries doet
Waarom zou je het niet doen?
Die vraag heb ik al eens beantwoord, maar je kan het in 1 query doen, waarom 2 queries gaan doen?quote:Op maandag 4 augustus 2008 20:48 schreef Chandler het volgende:
[..]
Voor mijn statistieken systeem ala ipcounter.nl, had in mijn nieuwe systeem vaak een probleem dat een uniek veld dubbel geschreven werdt. Even om duidelijk te zijn.
In het oude systeem deed ik.
Query voor kijken of item bestaat
JA -> fetch en return ID
Nee -> Insert en return mysql_insert_id()
In het nieuwe systeem heb ik dit allemaal verwijderd door de simpele INSERT INTO.... ON DUPLICATE KEY id = MYSQL_LAST_ID(id) waarbij de output precies het zelfde is, echter vraag ik me af of dit op den duur het systeem niet erg traag zou maken!?
[..]
Joh... XP en FF3 terwijl ik Ubuntu 6.10 / FF2.0.0.14 draai.quote:Dat is inderdaad de bedoeling? zie je een fout gegeven dan?
Mja het gaat mij er continue om om bepaalde ID's te achterhalen en te zetten, oftewel veel al insert en update wat ik dus nu in 1 query doequote:Op maandag 4 augustus 2008 20:55 schreef slakkie het volgende:
Die vraag heb ik al eens beantwoord, maar je kan het in 1 query doen, waarom 2 queries gaan doen?
REPLACE INTO ip (ip, hostname) VALUES ('127.0.0.1', 'localhost').
Mag ik jou useragentstring dan ook?quote:Joh... XP en FF3 terwijl ik Ubuntu 6.10 / FF2.0.0.14 draai.
Je wilt geen update doen als het record gelijk is aan wat je gaat invoeren?quote:Op maandag 4 augustus 2008 21:05 schreef Chandler het volgende:
Mja het gaat mij er continue om om bepaalde ID's te achterhalen en te zetten, oftewel veel al insert en update wat ik dus nu in 1 query doemaar goed, ik vertrouw er nu op dat het niet zo goed is als eerst zoeken, dan plaatsen of uitlezen...
Zitten in je access logs.quote:Mag ik jou useragentstring dan ook?
In heel veel gevallen wil ik iets lezen, tenzij het niet bestaat dan invoeren. Laten we zeggen dat 95% uit lezen bestaat en 5% uit invoeren cq updaten.quote:Op maandag 4 augustus 2008 21:18 schreef slakkie het volgende:
Je wilt geen update doen als het record gelijk is aan wat je gaat invoeren?
Duidelijkquote:Zitten in je access logs.
Je gaat daarna nog wat met het ID doen? Ik snap echt niet wat je nou precies aan het doen bent. Maar als je 95% van de tijd alleen interesse hebt in de ID's kan je net zo goed de ID opvragen en dan verder gaan, de overhead die je in met de overige 5% hebt is dan verder te verwaarlozen. In de huidige constructie ben je 100% bezig met read/write acties en anders ben je 95% read en 5% write acties aan het uitvoeren. De overhead van altijd updaten lijkt me meer wegen dan een tweede query voor een write actie.quote:Op maandag 4 augustus 2008 23:44 schreef Chandler het volgende:
[..]
In heel veel gevallen wil ik iets lezen, tenzij het niet bestaat dan invoeren. Laten we zeggen dat 95% uit lezen bestaat en 5% uit invoeren cq updaten.
[..]
Duidelijk
Slacker_nl, ik zou graag wat dieper hier op in gaan maar kan dat helaas niet op het forum, ik wil je met plezier laten zien waar ik dit alles voor gebruik! PM voor meer info indien je geintresseerd bentquote:Op dinsdag 5 augustus 2008 12:14 schreef slacker_nl het volgende:
[..]
Je gaat daarna nog wat met het ID doen? Ik snap echt niet wat je nou precies aan het doen bent. Maar als je 95% van de tijd alleen interesse hebt in de ID's kan je net zo goed de ID opvragen en dan verder gaan, de overhead die je in met de overige 5% hebt is dan verder te verwaarlozen. In de huidige constructie ben je 100% bezig met read/write acties en anders ben je 95% read en 5% write acties aan het uitvoeren. De overhead van altijd updaten lijkt me meer wegen dan een tweede query voor een write actie.
Heel misschien omdat de ene machine case sensitive is en de ander niet?quote:Op woensdag 6 augustus 2008 17:03 schreef gieling het volgende:
Ik heb een probleempje, dus eerst maar even hier voorleggen.
Ik heb sinds kort een mac en daarop MAMP geinstalleerd... alleen als ik nu een script draai die postgegevens uit een form haalt, herkent hij de POST data niet. GET is verder geen probleem. Het script draait ook op een andere server dus het ligt zeker niet aan de code.
Iemand een idee waar het aan kan liggen?
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 | if($_GET["page"]=='edit') { $get_cat_info=mysql_query("SELECT * FROM categories WHERE id=".$cid."")or die(mysql_error()); $cat_info=mysql_fetch_assoc($get_cat_info); if($cat_info["status"]=='open') { $open='selected'; }else{ $closed='selected'; } $content='<b>Categorie - Wijzigen</b><br><br> <form title="add" action="categorie.php?page=edit2&cid='.$_GET["cid"].'" method="post">Titel voor categorie (Nederlands): <input title="title" type="text" size="30" class="form" value="'.$cat_info["title"].'" /><br><br> Titel voor categorie (Engels): <input title="title_en" type="text" size="30" class="form" value="'.$cat_info["title_en"].'" /><br><br> Status van de Categorie: <select title="status" size="1" class="form"><option value="Open" '.$open.'>Open</option><option value="close d" '.$closed.'>closed</option></select><br><br>Toevoegen: <input type="submit" title="Submit" value="Toevoegen" class="form" /></form>'; } if($_GET["page"]=='edit2') { mysql_query("UPDATE categories SET title='".$_POST["title"]."',title_en='".$_POST["title_en"]."',status='".$_POST["status"]."' WHERE id=".$_GET["cid"]."")or die(mysql_error()); $content='<b>Categorie - Wijzigen</b><br /><br />De categorie is succesvol gewijzigd. Klik <a href="categorie.php">hier</a> om verder te gaan.'; } ?> |
Geprobeerd maar haalt niks uitquote:Op woensdag 6 augustus 2008 17:27 schreef slacker_nl het volgende:
Ipv _POST en _GET kan je beter _REQUEST gebruiken... _POST en _GET zitten gewoon in _REQUEST:
http://nl3.php.net/manual/en/reserved.variables.request.php
Code draait local hequote:Op woensdag 6 augustus 2008 17:37 schreef slacker_nl het volgende:
Dat lijkt me sterk...
Een URL met daarin debug info, zodat we kunnen zien wat er fout gaat?
yes i know, maar script is toegankelijk voor één persoon (verder geen excuus)quote:Op woensdag 6 augustus 2008 17:44 schreef DionysuZ het volgende:
en verder zou ik me eens inlezen in sql injecties, want die code is erg vulnerable.
$_REQUEST heeft ook nadelen. Je weet niet meer of een waarde via GET of POST (of COOKIE) geset is. En het is meer typen.quote:Op woensdag 6 augustus 2008 17:27 schreef slacker_nl het volgende:
Ipv _POST en _GET kan je beter _REQUEST gebruiken... _POST en _GET zitten gewoon in _REQUEST:
http://nl3.php.net/manual/en/reserved.variables.request.php
Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.quote:Op woensdag 6 augustus 2008 18:18 schreef Light het volgende:
[..]
$_REQUEST heeft ook nadelen. Je weet niet meer of een waarde via GET of POST (of COOKIE) geset is. En het is meer typen.
Daar gaat de illusie dat JSP professioneel isquote:Op woensdag 6 augustus 2008 18:59 schreef slakkie het volgende:
Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.
_GET bevat alle variabelen die via de url (na het vraagteken) of via een formulier met method="get" worden meegezondenquote:Op woensdag 6 augustus 2008 18:59 schreef slakkie het volgende:
[..]
Mja, _GET en _POST zijn nagenoeg hetzelfde, in JSP moet je ook een _get en een _post functie maken, waarbij je 9 vd 10 keer _get doorsluist naar de _post functie.
Je moet dan ook of if('blaat' == $_GET['val']) of if('blaat' == $_POST['val']) gebruiken. En ja, ik heb de constante expres vooraan gezet in die vergelijkingen.quote:_COOKIE kan ik het nog begrijpen, maar je weet toch zelf wel waar je de value vandaan haalt...
En if ($_REQUEST['val'] == 'blaat') is korter dan: if ($_GET['val'] == "blaat" || $_POST['val'] == "blaat").
_REQUEST geeft preference op _POST en niet op _GET, dus als jij data post en je zorgt dat de link ?val=bla bevat (om zo de data van _POST te overwriten) dan kom je bedrogen uit aangezien de _POST var voorrang heeft in de _REQUEST var. Dus waarom zou je dan in de problemen komen? Verder is het zo dat als je met _POST of _GET gaat werken dat je meer code moet kloppen (met debuggen gebruik je vaak een GET, en in live situaties ga je POST gebruiken). Jij moet voor deze twee gevallen extra code gaan kloppen terwijl ik alleen met _REQUEST gebruik en dus nergens m'n code hoef aan te passen.... Dus zowel met de GET als de POST kan ik op een generieke wijze overweg.quote:Op woensdag 6 augustus 2008 19:42 schreef Light het volgende:
[..]
_GET bevat alle variabelen die via de url (na het vraagteken) of via een formulier met method="get" worden meegezonden
_POST bevat alle variabelen die via een formulier met method="post" worden meegezonden. Da's niet hetzelfde.
Als je _REQUEST gebruikt kan ik een linkje bouwen dat hetzelfde doet als een formuliertje. Door dan iemand op dat linkje te laten klikken (klik hier om 1 miljoen euro te winnen), kunnen er dingen gebeuren die jij niet had voorzien. Het effect kan onbeduidend zijn maar ook tot gekkere dingen leiden.
Uhm, ik zie hier iemand _POST en _GET door elkaar gebruiken, en m.i. moet je een call kunnen maken met zowel POST als GET en hetzelfde resultaat krijgen. _REQUEST is gewoon makkelijker, aangezien je je niet druk hoeft te maken over hoe de variablen in je request terecht komen, via GET of POST.quote:Je moet dan ook of if('blaat' == $_GET['val']) of if('blaat' == $_POST['val']) gebruiken. En ja, ik heb de constante expres vooraan gezet in die vergelijkingen.
REQUEST bevat idd eerst GET en dan POST, als een variabele in beide geset wordt dan krijg je alleen de POST-waarde.quote:Op woensdag 6 augustus 2008 20:24 schreef slakkie het volgende:
[..]
_REQUEST geeft preference op _POST en niet op _GET, dus als jij data post en je zorgt dat de link ?val=bla bevat (om zo de data van _POST te overwriten) dan kom je bedrogen uit aangezien de _POST var voorrang heeft in de _REQUEST var. Dus waarom zou je dan in de problemen komen? Verder is het zo dat als je met _POST of _GET gaat werken dat je meer code moet kloppen (met debuggen gebruik je vaak een GET, en in live situaties ga je POST gebruiken). Jij moet voor deze twee gevallen extra code gaan kloppen terwijl ik alleen met _REQUEST gebruik en dus nergens m'n code hoef aan te passen.... Dus zowel met de GET als de POST kan ik op een generieke wijze overweg.
Ik kan me situaties voorstellen waarin een deel van de velden via _GET en een deel via _POST komt of waarbij je beide opties wilt kunnen gebruiken. Maar _REQUEST is niet de oplossing die ik wil prediken als juist in alle situaties. Het kan een oplossing zijn, maar dan moet het wel goed doordacht worden.quote:Uhm, ik zie hier iemand _POST en _GET door elkaar gebruiken, en m.i. moet je een call kunnen maken met zowel POST als GET en hetzelfde resultaat krijgen. _REQUEST is gewoon makkelijker, aangezien je je niet druk hoeft te maken over hoe de variablen in je request terecht komen, via GET of POST.
True. Het grootste verschil is dat je meteen een dikke foutmelding om je oren krijgt als de constante eerst staat en je een = vergeet. Dat kan debugtijd schelen.quote:Het boeit mij verder niet waar je de constante neerzet, zolang ie maar aan de juiste voorwaarde voldoet.
Als je een delete.php form niet de GET accepteert maar in je code staat alleen dat het dmv POST opgestuurd wordt, dan klop je zelf wat stuut je een linkje op: http://opperschaap.net/ditwerktniet en zodra je daar op klikt wordt er een POST verzoek uitgevoerd naar example.com/delete.php met id=1234&hoedje=papier. Problem solved .quote:Op woensdag 6 augustus 2008 21:07 schreef Light het volgende:
REQUEST bevat idd eerst GET en dan POST, als een variabele in beide geset wordt dan krijg je alleen de POST-waarde.
Het verwerken van formulierdata wil je meestal niet doen met variabelen die uit een GET komen. Voorbeeldje. Je hebt een formuliertje om dingen te verwijderen. Dat formuliertje gebruikt post en stuurt data (id=123) naar example.com/delete.php . In de verwerking wordt _REQUEST gebruikt.
Als ik dan iemand laat klikken op example.com/delete.php?id=123 ziet het formulier ook een id en wordt er dus ook iets verwijderd. En ja, het kan nog zo zijn dat voor die actie bepaalde rechten nodig zijn. Dan moet ik iemand met voldoende rechten op die link laten klikken. Da's niet zo moeilijk als het misschien lijkt.
Had je echter _POST gebruikt dan doet het klikken op het linkje niets, omdat er geen waarde via POST wordt verzonden. En ja, ik weet dat er meer manieren zijn en dat het ook mogelijk is om met bijvoorbeeld javascript een post-request uit te voeren. Maar je maakt het wel lastiger op die manier.
Ander voorbeeld. Stel je hebt een weblog waar bezoekers anoniem kunnen reageren. Dat gaat via een post-formuliertje. Iemand komt erachter dat het ook werkt als je de waardes in de url zet ipv via het formuliertje en zet die url op een forum ofzo. Gevolg, je krijgt 10.000 reacties van "anoniempje" met de tekst "slakkie is gek".
Als een browser iets kan, is het ook te scripten. Maar er zijn wel dingen om het lastiger te maken. En een post-request doen met een (server-side) script gaat vaak niet werken, omdat je niet over de juiste koekjes beschikt. Dus je moet het door een browser laten doen. Is ook best mogelijk met wat javascript, daar niet van.quote:Op woensdag 6 augustus 2008 22:03 schreef slakkie het volgende:
[..]
Als je een delete.php form niet de GET accepteert maar in je code staat alleen dat het dmv POST opgestuurd wordt, dan klop je zelf wat stuut je een linkje op: http://opperschaap.net/ditwerktniet en zodra je daar op klikt wordt er een POST verzoek uitgevoerd naar example.com/delete.php met id=1234&hoedje=papier. Problem solved .
Kortom, als je vanwege security redenen iets niet GET zet maar in POST ben je enigsinds naief bezig. Je houdt misschien het beginnende lastpakje buiten de deur, maar anderen die iets meer verstand hebben kunnen die POST wel scripten en die proberen wel wat meer dan 10.000 keer zeggen dat ik gek ben (wat wel klopt overigens).
Da's ook geen 100% garantie. Als ik een actie http://opperschaap.net/ditwerktniet wil laten uitvoeren zonder dat ik de rechten heb (lees: op het goede ip zit) dan moet ik zorgen dat ik iemand met de goede rechten op die link laat klikken. Dan kan ik jou wel een mail sturen met een blaatverhaal over die site en een link om aan te klikken. Als je dan half oplet en ziet dat die link naar http://example.org/ gaat dan is dat verdacht en klik je niet. Maar een link naar het goede domein valt minder op, dus is de kans dat je klikt groter.quote:Als je echt niet wilt dat bepaalde acties uitgevoerd worden dan ga je access toelaten op basis van IP adres (in Apache, of via je netwerk devices, etc), en zou je in de applicatie laag ook nog gebruik kunnen maken van ACL's (Xins is hier een voorbeeld van, daar kan je calls naar functies toelaten op basis van IP adresses, of je het nou via een GET of een POST uitvoert). En zo kan je van meer dingen gebruik maken om ervoor te zorgen dat er geen oneigenlijk gebruik wordt gemaakt van je systeem/applicatie.
Pricelessquote:Op woensdag 6 augustus 2008 22:36 schreef Farenji het volgende:
Als illustratie het vast wel bekende verhaal van iemand die een CMS had gebouwd, en daar alleen GET methodes in had gebruikt. Er werd een hele site ingezet, met veel data. Hij had er geen wachtwoord voorgezet, en het CMS werd op een gegeven moment gespiderd door Google. Gevolg: de hele site gewist. Want alle delete-knoppen waren gewoon linkjes met een GET querystring.
Whehehehequote:Op woensdag 6 augustus 2008 22:36 schreef Farenji het volgende:
Als illustratie het vast wel bekende verhaal van iemand die een CMS had gebouwd, en daar alleen GET methodes in had gebruikt. Er werd een hele site ingezet, met veel data. Hij had er geen wachtwoord voorgezet, en het CMS werd op een gegeven moment gespiderd door Google. Gevolg: de hele site gewist. Want alle delete-knoppen waren gewoon linkjes met een GET querystring.
Tja je zal de mensen de kost moeten geven... en de eerlijkheid gebiedt me te zeggen dat ik zelf ook wel zulke fouten heb gemaakt - al was ik altijd wel zo slim om er een wachtwoord voor te plempenquote:Op donderdag 7 augustus 2008 09:15 schreef WyriHaximus het volgende:
[..]
Whehehehe. (Je kan me hier opvegen
.) Is natuurlijk wel het ubervoorbeeld hoe het niet moet
.
Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.quote:Op donderdag 7 augustus 2008 16:18 schreef Farenji het volgende:
[..]
Tja je zal de mensen de kost moeten geven... en de eerlijkheid gebiedt me te zeggen dat ik zelf ook wel zulke fouten heb gemaakt - al was ik altijd wel zo slim om er een wachtwoord voor te plempen
Echt nietquote:Op donderdag 7 augustus 2008 16:42 schreef Light het volgende:
[..]
Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.
Idd, vallen en opstaan, vallen en opstaan babequote:Op donderdag 7 augustus 2008 16:42 schreef Light het volgende:
[..]
Ik denk dat iedereen wel eens zo'n fout gemaakt heeft.
1 |
1 |
De tekens die mogen voorkomen in de string zijn alfanumerieke waarden (hoofd- en kleine letters), de /, de _, - en de =.quote:Op donderdag 7 augustus 2008 20:04 schreef SuperRembo het volgende:
Je vertelt niet wat precies de bedoeling is, en dat is meestal wel handig om te weten om te begrijpen of iets wel of niet "werkt". Welke tekens mogen er voorkomen in de string?
En dat was juist het vreemde. Ik had eerst de - escaped met een \, maar toen deed hij het dus niet. Toen ik hem achteraan zette werkte hij weer wel.quote:Je wil een streepje - gebruiken in een set, als die niet aan het begin of eind van de set staat, dan moet je die escapen met een backslash. Een set met letters, cijfers, streepje en gelijkteken wordt dan [a-z0-9\-=]. Deze set zet je in een string, daarbij moet je tekens als " en \ escapen met een backslash: "[a-z0-9\\-=]".
Ja, preg_match() is sneller dan eregi(). Maar in dit geval is het snelheidsverschil verwaarloosbaar, ik match gewoon een redelijk kleine string, en doe dat maar 1x per gelaadde pagina.quote:Is preg_match() niet sneller dan eregi()?
Je moet dus 2x escapen:1x voor de regexp zelf, en 1x voor de php string.quote:Op donderdag 7 augustus 2008 22:00 schreef DionysuZ het volgende:
[..]
En dat was juist het vreemde. Ik had eerst de - escaped met een \, maar toen deed hij het dus niet. Toen ik hem achteraan zette werkte hij weer wel.
1 2 3 4 5 6 7 8 | <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2003">2003 <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2004">2004 <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2005">2005 <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2006">2006 <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2007">2007 <INPUT TYPE="checkbox" NAME="belasting_jaar[]" VALUE="2008">2008 ?> |
1 2 3 4 5 | foreach( $POST['belasting_jaar'] as $iets ) { print_r( $iets ); } ?> |
1 2 3 4 5 | foreach ( $POST['belasting_jaar'] as &$iets ) { print_r($iets); } ?> |
1 2 3 4 | header('Content-type: image/gif'); header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 readfile($url); |
mjah het heeft meer te maken met dat dat plaatje om de 5 minuten anders is, en ik die wil herladen in de browser. Het gaat om dit plaatjequote:Op vrijdag 8 augustus 2008 19:04 schreef slakkie het volgende:
Het voordeel van een browser is toch dat je de image locatie ook van de andere site kan trekken...
Mijn voorstel:
<img src="http://de.andere.server/hetplaatje.gif" alt="Bewegend plaatje van een andere server" />
Dat probeerde ik dus eerst wel, maar filesize($url) poepte een error uit.quote:Op vrijdag 8 augustus 2008 19:09 schreef GlowMouse het volgende:
Je stuurt geen Content-Length header mee.
Echt wel.quote:Op vrijdag 8 augustus 2008 19:12 schreef DionysuZ het volgende:
en een dummy string erachter (&rnd=21312312 bijv.) niet werkt in dit geval
Waarom werkt dat niet?quote:Op vrijdag 8 augustus 2008 19:12 schreef DionysuZ het volgende:
En die wil ik dus d.m.v. javascript om de x minuten herladen. Maar aangezien veel browsers dan gewoon het plaatje uit de cache halen en een dummy string erachter (&rnd=21312312 bijv.) niet werkt in dit geval, wilde ik een kleine omweg maken
1 2 3 | shell_exec('xte -x :0.0 "key Right"'); ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | if ($sock = @fsockopen("whois.ripe.net", 43, &$errno, &$errstr, WHOIS_SERVER_TIMEOUT)) { fputs ($sock, $ip_adres . "\n"); while (!feof($sock)) { $ripeBuffer .= fgets($sock, 10240); } fclose ($sock); } ?> |
quote:Curl_do() makes sure the proper protocol-specific function is called. The
functions are named after the protocols they handle. Curl_ftp(),
Curl_http(), Curl_dict(), etc. They all reside in their respective files
(ftp.c, http.c and dict.c). HTTPS is handled by Curl_http() and FTPS by
Curl_ftp().
The protocol-specific functions of course deal with protocol-specific
negotiations and setup. They have access to the Curl_sendf() (from
lib/sendf.c) function to send printf-style formatted data to the remote
host and when they're ready to make the actual file transfer they call the
Curl_Transfer() function (in lib/transfer.c) to setup the transfer and
returns.
If this DO function fails and the connection is being re-used, libcurl will
then close this connection, setup a new connection and re-issue the DO
request on that. This is because there is no way to be perfectly sure that
we have discovered a dead connection before the DO function and thus we
might wrongly be re-using a connection that was closed by the remote peer.
Some time during the DO function, the Curl_setup_transfer() function must
be called with some basic info about the upcoming transfer: what socket(s)
to read/write and the expected file tranfer sizes (if known).
http://www.hotscripts.comquote:Op maandag 11 augustus 2008 11:06 schreef Erik het volgende:
Kan iemand mij helpen aan een eenvoudig maar veilig inlogscript?
Heb er al vele geprobeerd maar kom er niet altijd uit (liefst 1die niet objectgeoriënteerd geprogrammeerd is, dat gaat me helemaal niet lukken vrees ik).
1 2 3 4 5 6 7 8 9 10 | $login = "jij"; $passwd = "hij"; if ($login == "jij" && $passwd = "niethij") { print("Login succesvol\n"); } else { die("Login niet succesvol\n"); } ?> |
Zo misschien even snel:quote:Op maandag 11 augustus 2008 11:13 schreef Swetsenegger het volgende:
Ik val weer even binnen met een query vraag.
Ik heb 3 (relevante) tabellen.
product
Beschrijft het product, relevante cellen:
ID | IS_ACTIVE | CODE
product_download
Beschrijft een download, relevante cellen
ID | DOWNLOAD_TYPE_ID
product_download_link
Koppelt een download aan een product, relevante cellen
ID | PRODUCT_ID | DOWNLOAD_ID
Nu wil ik een lijst hebben met alle actieve productcode's die GEEN download hebben van DOWNLOAD_TYPE_ID=4
Ik loop te kutten met innerjoins, maar krijg steeds syntax errors.
1 2 3 4 | AND p.id NOT IN (SELECT pdl.PRODUCT_ID FROM product_download pdl INNER JOIN product_download_link pd ON pd.DOWNLOAD_ID = pdl.ID WHERE pdl.DOWNLOAD_TYPE_ID = 4) |
1 2 3 4 5 | <option value=item1 >item1</option> <option value=item2 >item2</option> <option value=item3 >item3</option> </select> |
Ziet er niet erg efficiënt en overzichtelijk uit. Volgens mij komt dit op hetzelfde neer:quote:Op maandag 11 augustus 2008 11:18 schreef slacker_nl het volgende:
[...]
-- in reactie op swets reactie hieronder --
select product.id
from product, product_download_link
where
/* Products die wel downloads hebben uit 4 skippen we*/
product.id not in (
select product.id
from product, product_download_link
where
product_download_link.product_id = product.id
and
product_download_link.download_id IN ( select id from product_download where DOWNLOAD_TYPE_ID = 4)
and product.is_active = 1
)
AND product.is_active = 1
AND product_download_link.product_id = product.id
1 2 3 4 5 6 7 8 9 10 11 | FROM product p WHERE p.active = 1 AND p.id NOT IN ( SELECT l.product_id FROM product_download_link l INNER JOIN product_download d ON d.id = l.download_id WHERE d.DOWNLOAD_TYPE_ID = 4) ) |
Dat is met alles zo, als je het netjes programmeer/script dan is het teruglezen 10 makkelijk.quote:Op maandag 11 augustus 2008 23:46 schreef SuperRembo het volgende:
Veel mensen zullen me een zeikerd vinden wat betreft structuur van een query, maar als je sql netjes opschrijft, dan wordt het geheel vaak veel beter leesbaar en beter te begrijpen. En dat leidt weer tot minder fouten en minder overbodige dingen, wat weer tot efficiëntere code kan leiden.
Nee hoor, ben het volkomen met je eens.quote:Op maandag 11 augustus 2008 23:46 schreef SuperRembo het volgende:
Veel mensen zullen me een zeikerd vinden wat betreft structuur van een query, maar als je sql netjes opschrijft, dan wordt het geheel vaak veel beter leesbaar en beter te begrijpen. En dat leidt weer tot minder fouten en minder overbodige dingen, wat weer tot efficiëntere code kan leiden.
quote:Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 467248 bytes) in /var/www/PMA/libraries/sqlparser.
Met PHPMyAdmin heb de optie om de query in stukjes te hakken om timeouts te voorkomen. Misschien dat dat helpt?quote:Op dinsdag 12 augustus 2008 14:45 schreef PiRANiA het volgende:
Wie heeft een tip voor me hoe ik het makkelijkst 38000 records weer kan importeren in een database? Het wil maar niet werken:
[..]
Lijkt me wel! Waar vind ik dat?quote:Op dinsdag 12 augustus 2008 15:20 schreef Tijn het volgende:
[..]
Met PHPMyAdmin heb de optie om de query in stukjes te hakken om timeouts te voorkomen. Misschien dat dat helpt?
Maar dit gaat niet goed omdat er een ' staat in auto's. SQL gooit de ' eruit en geeft dan geen resultaat (logisch,...)quote:WHERE (reknr LIKE ' 8%') AND (oms25_0 LIKE '% nieuwe auto's N%')
escapen met mysql_real_escape_string.quote:Op woensdag 13 augustus 2008 09:32 schreef ManAtWork het volgende:
In mijn SQL script heb ik de volgende voorwaarde staan.
[..]
Maar dit gaat niet goed omdat er een ' staat in auto's. SQL gooit de ' eruit en geeft dan geen resultaat (logisch,...)
Ik heb al even zitten zoeken maar kan zo snel niet de oplossing vinden (blokhaken werken niet) om wel op auto's te laten selecteren.
Iemand een oplossing?
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |