Als je 10 velden maakt met name="veldnaam[]" en deze niet in vult zit hij nog steeds in de array, dus de empty check zit zowel bij de concatenatie als bij de array+loops, dus dan komt het aan op de array vs, concat waar laatste 1 berekening extra nodig is per iteratie om de veldnaam te berekenen.quote:Op woensdag 9 november 2011 13:36 schreef Scorpie het volgende:
[..]
Arrays & loops
Concatenatie en empty() checks
Daarbij is het qua leesbaarheid een stuk minder netjes, is het werken in PHP met array`s een native werkwijze en werkt het qua onderhoud ook erg lekker.quote:Op woensdag 9 november 2011 13:41 schreef Pakspul het volgende:
[..]
Als je 10 velden maakt met name="veldnaam[]" en deze niet in vult zit hij nog steeds in de array, dus de empty check zit zowel bij de concatenatie als bij de array+loops, dus dan komt het aan op de array vs, concat waar laatste 1 berekening extra nodig is per iteratie om de veldnaam te berekenen.
Ben ik het nog niet mee eens, want je kan een rij toevoegen met js, maar wie zegt dat deze is ingevuld?quote:Op woensdag 9 november 2011 13:51 schreef Pakspul het volgende:
Ben ik het met je eens, maar je zit nog steeds met dat in beide gevallen je 10 velden hebt. Hiervoor kan de persoon met het probleem (naam even kwijt) beter gaan kijken of hij wat mooie trucks kan uithalen in HTML+JS om zo on-the-fly rijen toe te voegen en dan kan hij perfect met naam[] gaan werken.
Het blijft verstandig om checks uit te blijven voeren, maar het scheelt sowieso een scherm waar de persoon moet opgeven hoeveel velden/rijen hij wil. Dat zal ten goede komen aan de gebruiksvriendelijkheid van de applicatie. Het scheelt je in omslachtige PHP constructies omdat het in JS erg makkelijk geregeld kan worden. En de persoon kan snel nog een regel toevoegen als hij er toch meer dan X wil hebben, anders moet hij terug en weer alles invullen.quote:Op woensdag 9 november 2011 13:57 schreef remi1986 het volgende:
[..]
Ben ik het nog niet mee eens, want je kan een rij toevoegen met js, maar wie zegt dat deze is ingevuld?
Dat ben ik dan wel weer met je eensquote:Op woensdag 9 november 2011 14:02 schreef Pakspul het volgende:
[..]
Het blijft verstandig om checks uit te blijven voeren, maar het scheelt sowieso een scherm waar de persoon moet opgeven hoeveel velden/rijen hij wil. Dat zal ten goede komen aan de gebruiksvriendelijkheid van de applicatie. Het scheelt je in omslachtige PHP constructies omdat het in JS erg makkelijk geregeld kan worden. En de persoon kan snel nog een regel toevoegen als hij er toch meer dan X wil hebben, anders moet hij terug en weer alles invullen.
Ik mag hopen dat het niet alleen zo voelt, maar ook zo is en je dat kan meten.quote:Op donderdag 10 november 2011 08:32 schreef Pizzalucht het volgende:
Ik heb gisteren een enorme database omgezet naar InnoDB, en wat een verschil zeg, alles voelt veel sneller aan.
Trouwens de DB config van pastebin gebruikt![]()
Het gaat om een forum, iedereen zegt dat hij veel sneller is, dus daar hoef ik het niet voor te metenquote:Op donderdag 10 november 2011 08:38 schreef Scorpie het volgende:
[..]
Ik mag hopen dat het niet alleen zo voelt, maar ook zo is en je dat kan meten.
Hm, ik ben blij dat ik niet zo`n instelling op mijn werk laat zien.quote:Op donderdag 10 november 2011 08:41 schreef Pizzalucht het volgende:
[..]
Het gaat om een forum, iedereen zegt dat hij veel sneller is, dus daar hoef ik het niet voor te meten
Het lijkt wel alsof jij op dit forum zit om op iedereen te zeiken, is het ooit goed volgens jou?quote:Op donderdag 10 november 2011 08:45 schreef Scorpie het volgende:
[..]
Hm, ik ben blij dat ik niet zo`n instelling op mijn werk laat zien.
Het is gewoon een les. Als ik onnodig dingen ga vervangen / omzetten / migreren op mijn werk dan word ik (terecht) teruggefloten en moet ik aantonen waarom ik iets doe. Het is een way of thinking; "waarom doe je iets, wat levert het op, en hoe kan het nog beter?"quote:Op donderdag 10 november 2011 08:48 schreef Pizzalucht het volgende:
[..]
Het lijkt wel alsof jij op dit forum zit om op iedereen te zeiken, is het ooit goed volgens jou?
Dus je hebt wel gemeten?quote:Het was een weloverwogen actie, en we hadden veel onderzoek gedaan naar de oorzaak van de traagheid van de database.
Ik heb gemeten op MyISAM ja, maar die resultaten heb ik niet meer.quote:Op donderdag 10 november 2011 08:50 schreef Scorpie het volgende:
[..]
Het is gewoon een les. Als ik onnodig dingen ga vervangen / omzetten / migreren op mijn werk dan word ik (terecht) teruggefloten en moet ik aantonen waarom ik iets doe. Het is een way of thinking; "waarom doe je iets, wat levert het op, en hoe kan het nog beter?"
Ze zien me al aan komen met 'zuh zegguh dat het snellur werrukt'.
[..]
Dus je hebt wel gemeten?
Dan hoef je je toch ook niet aangevallen te voelen? Je hebt een use case waarom je iets gedaan hebt, je hebt het weten te motiveren en vervolgens uitgevoerd.quote:Op donderdag 10 november 2011 08:52 schreef Pizzalucht het volgende:
[..]
Ik heb gemeten op MyISAM ja, maar die resultaten heb ik niet meer.
Ja, maar geen resultaten om te vergelijken.quote:Op donderdag 10 november 2011 08:54 schreef Scorpie het volgende:
[..]
Dan hoef je je toch ook niet aangevallen te voelen? Je hebt een use case waarom je iets gedaan hebt, je hebt het weten te motiveren en vervolgens uitgevoerd.
quote:Op donderdag 10 november 2011 08:57 schreef Pizzalucht het volgende:
[..]
Ja, maar geen resultaten om te vergelijken.
En sorry dan, het is vroeg
Als je veel updates doet, sure, maar als je vooral veel leest en geen transacties nodig hebt is MyISAM vaak sneller. Dus dat is nogal een broad sweeping statement. Hoe dan ook is het "meten is weten", dat soort dingen test je natuurlijk gewoon.quote:Op donderdag 10 november 2011 11:18 schreef GlowMouse het volgende:
InnoDB is heel vaak de betere keuze.
Het verschil is slechts enkele procenten, niet de moeite waard tegenover de voordelen die InnoDB biedt.quote:Op donderdag 10 november 2011 12:16 schreef Catbert het volgende:
[..]
Als je veel updates doet, sure, maar als je vooral veel leest en geen transacties nodig hebt is MyISAM vaak sneller.
InnoDB houdt toch geen rowcounts bij voor tabellen? Of doet 'ie dat wel tegenwoordig? Gebruik al jaren geen MySQL meer...quote:Op donderdag 10 november 2011 12:22 schreef GlowMouse het volgende:
Het verschil is slechts enkele procenten, niet de moeite waard tegenover de voordelen die InnoDB biedt.
Met 256mb geheugen zit je helaas aan MyISAM vast.quote:Op donderdag 10 november 2011 11:18 schreef GlowMouse het volgende:
InnoDB is heel vaak de betere keuze. De configuratie moet je dan wel op je data en op je hardware afstemmen, en niet zo van pastebin plukken.
Je hebt nooit een rowcount nodig. Een rowcount bestaat ook helemaal niet.quote:Op donderdag 10 november 2011 12:40 schreef Catbert het volgende:
[..]
InnoDB houdt toch geen rowcounts bij voor tabellen? Of doet 'ie dat wel tegenwoordig? Gebruik al jaren geen MySQL meer...
256MB geheugen komt nergens voor. InnoDB kan er prima mee werken, maar verwacht net als bij MyISAM geen goede performance als je regelmatig data moet lezen die niet in je geheugen staat.quote:Op donderdag 10 november 2011 13:15 schreef Thomass het volgende:
[..]
Met 256mb geheugen zit je helaas aan MyISAM vast.
of heb je nog een protip?
Heb je daar ook mooie tutorials voor qua settings?quote:Op donderdag 10 november 2011 11:18 schreef GlowMouse het volgende:
InnoDB is heel vaak de betere keuze. De configuratie moet je dan wel op je data en op je hardware afstemmen, en niet zo van pastebin plukken.
Er is heel veel leesvoer, maar let vooral op de bufferpoolgrootte, op innodb_flush_log_at_trx_commit =2 (tenzij je een raid controller met bbu hebt, dan 1), innodb_flush_method = O_DIRECT, innodb_file_per_table, en bij een ssd nog wat andere settings. Let ook op dat je minimaal 5.5 gebruikt, en bij voorkeur een Percona-build omdat je daarmee veel meer kunt meten. Al is dat laatste bij 256 MB wellicht niet echt wenselijk omdat al die metrics ook een klein beetje geheugen gebruiken.quote:Op donderdag 10 november 2011 13:51 schreef ursel het volgende:
[..]
Heb je daar ook mooie tutorials voor qua settings?
Ik heb niet de config van pastebin geplukt, ik heb de config van de eigenaar van pastebinquote:Op donderdag 10 november 2011 11:18 schreef GlowMouse het volgende:
InnoDB is heel vaak de betere keuze. De configuratie moet je dan wel op je data en op je hardware afstemmen, en niet zo van pastebin plukken.
MyISAM houdt gewoon bij hoeveel rows er in een table zitten. Een simpele SELECT COUNT(*) FROM table wordt dan uitgevoerd door uberhaupt niet naar de table te kijken maar gewoon die rowcount terug te geven. Natuurlijk een enorm simpele usecase die niet vaak voor zal komen, en ik geloof best dat InnoDB in veel gevallen de beste oplossing is (alleen al om de row-locking), maar ik vind het wat kort door de bocht om te stellen dat dat altijd zo is.quote:Op donderdag 10 november 2011 13:40 schreef GlowMouse het volgende:
Je hebt nooit een rowcount nodig. Een rowcount bestaat ook helemaal niet.
je leest niet goedquote:Op donderdag 10 november 2011 14:17 schreef Catbert het volgende:
[..]
MyISAM houdt gewoon bij hoeveel rows er in een table zitten. Een simpele SELECT COUNT(*) FROM table wordt dan uitgevoerd door uberhaupt niet naar de table te kijken maar gewoon die rowcount terug te geven.
groot verschilquote:Op donderdag 10 november 2011 14:04 schreef Pizzalucht het volgende:
[..]
Ik heb niet de config van pastebin geplukt, ik heb de config van de eigenaar van pastebin![]()
quote:Op donderdag 10 november 2011 13:40 schreef GlowMouse het volgende:
[..]
Je hebt nooit een rowcount nodig. Een rowcount bestaat ook helemaal niet.
[..]
Op mijn vps welquote:256MB geheugen komt nergens voor. InnoDB kan er prima mee werken, maar verwacht net als bij MyISAM geen goede performance als je regelmatig data moet lezen die niet in je geheugen staat.
1 2 3 4 5 6 7 8 9 10 11 12 | <?php $sql = "SELECT pagina.id AS paginaid, pagina.title AS paginatitle, pagina.link AS paginalink, buttons.button_id AS button_id, buttons.id AS id FROM 'pagina' JOIN buttons ON pagina.id = buttons.id ORDER BY `paginatitle` ASC;"; ?> |
Ik moest voor ik moderator werd van B&H en GAM inderdaad eerst een PHP/mySQL toets afnemen en deze met minimaal 95% aan goede antwoorden behalen.quote:
keer tijd om je db class uit te breiden? Zodat hij dit soort dingen aangeeft.quote:Op donderdag 10 november 2011 22:33 schreef boem-dikkie het volgende:
Goedenavond, ik ben boem-dikkie de klapmongool en ik ga kappen voor vanavond. Ik had nog geen database verbinding op de pagina waar de output moest komen.!!!!
Dat heeft niet perse zo veel zin want de hele database class stond nog niet op die pagina.quote:Op donderdag 10 november 2011 22:37 schreef Pakspul het volgende:
[..]
keer tijd om je db class uit te breiden? Zodat hij dit soort dingen aangeeft.
zulke dingen doe je ook in je db-classquote:Op donderdag 10 november 2011 22:24 schreef boem-dikkie het volgende:
Hij laat mijn if(!$result){ echo "foutmelding" }; zien. Hij kan de query dus niet uitvoeren.
Je moet die db class dan ook gebruiken om queries uit te voeren, dan heb je nooit de kans om een query uit te voeren zonder dat de db class geladen is.quote:Op donderdag 10 november 2011 22:52 schreef boem-dikkie het volgende:
[..]
Dat heeft niet perse zo veel zin want de hele database class stond nog niet op die pagina.
1 2 3 4 5 | SELECT TIME_FORMAT(TIMEDIFF(landingtime,starttime),"%k:%i") AS flighttime ORDER BY flighttime <<<<<<--------------- LIMIT 0,10 |
Dat moet, met een index erop. Je kunt het resultaat ook 1x/dag berekenen en ergens opslaan, zoveel nieuwe records (niet als in db-records maar als in langste vluchten) zullen er niet komen.quote:Op vrijdag 11 november 2011 19:32 schreef KomtTijd... het volgende:
[ code verwijderd ]
Heeft iemand enig idee hoe ik dat kan verbeteren? Flighttime opslaan in een extra kolom kan natuurlijk
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 | SELECT floco_flight_id, (int) airplane, (varchar) firstpilot_feu_id, (int) secondpilot_feu_id, (int) starttime, (datetime) landingtime, (datetime) startmethod, (varchar) flighttype, (varchar) club, (boolean) own, (boolean) flighttime, (time) DATE(starttime) AS datum, feu1.data AS firstpilot_name, feu2.data AS secondpilot_name FROM flightdb_flights LEFT JOIN feusers_properties AS feu1 ON (firstpilot_feu_id = feu1.userid) AND (feu1.title = 'realname') LEFT JOIN feusers_properties AS feu2 ON (secondpilot_feu_id = feu2.userid) AND (feu2.title = 'realname') WHERE (YEAR(starttime) = '2011' AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433') AND flighttime > '01:05:00') ORDER BY flighttime desc LIMIT 0,10 |
1 2 3 4 5 | userid | title | data 1 | name | piet 2 | name | jan 1 | adres | hoofdstraat 21 3 | name | henk |
1 2 3 | WHERE (YEAR(starttime) = '2011' AND (firstpilot_feu_id = '2' OR secondpilot_feu_id = '2')) ORDER BY starttime |
1 2 | WHERE (DATE(starttime) = '2011-10-30') ORDER BY starttime |
Dat is juist wat ik gedaan heb. Flighttime is nu een eigen kolom met index, terwijl deze eerst met TIMEDIFF on the fly berekend werd. Het verschil in prestaties is alleen marginaal.quote:Op maandag 14 november 2011 11:56 schreef Catbert het volgende:
Je berekent on the fly (huhu) waarden waarop je ordent, dat betekent min of meer dat er een volledige tijdelijke tabel opgebouwd moet worden (zou je waarschijnlijk ook zien in een query explain). Oftewel; bereken die flight-time voor en zet er een index op.
quote:
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 | pear_ResultSet Object ( [emptyTimeStamp] => [emptyDate] => [datetime] => [connectionId] => Resource id #25 [fields] => Array ( [id] => 1 [select_type] => SIMPLE [table] => flightdb_flights [type] => range [possible_keys] => flighttime,airplane [key] => flighttime [key_len] => 4 [ref] => [rows] => 466 [Extra] => Using where; Using temporary; Using filesort ) [resultId] => Resource id #248 [_currentRow] => 0 [_numOfRows] => 3 [_numOfFields] => 10 [fetchMode] => 1 [EOF] => [record] => Array ( ) ) |
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.quote:Sowieso is een query op 10k records complete peanuts.
Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...quote:Op maandag 14 november 2011 12:20 schreef KomtTijd... het volgende:
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.
de explain is van de query exact zoals ik hierboven gepost heb (dus niet die twee varianten). Mooier weergeven zou kunnen maar ik wist/weet amper waar ik naar zit te kijken. Heb exlpain nog niet eerder gebruikt.quote:Op maandag 14 november 2011 12:52 schreef GlowMouse het volgende:
Waar is die explain van en kan je dat niet mooier weergeven?
>> De tabel flightdb_flights laat zich raden.
niet waar, bovendien zijn er meer tabellen
1 2 3 4 5 6 7 8 9 10 11 12 13 | 1 floco_flight_id bigint(19) 2 airplane varchar(80) 3 firstpilot_id int(11) 4 secondpilot_id int(11) 5 starttime datetime 6 landingtime datetime 7 startmethod varchar(20) 8 flighttype varchar(20) 9 club tinyint(1) 10 own tinyint(1) 11 firstpilot_feu_id int(11) 12 secondpilot_feu_id int(11) 13 flighttime time |
1 2 3 4 | 1 id int(11) 2 userid int(11) 3 title varchar(100) 4 data longtext |
Niet bepaald, denk dat je dan nog 90% over hebt.quote:>> AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433')
hoe selectief is dat?
Je hebt het hier dus over "using temporary", neem ik aan?quote:Op maandag 14 november 2011 13:01 schreef Catbert het volgende:
[..]
Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...
Using temporary en using filesort zijn beiden indicaties dat MySQL het niet op de indexen op heeft kunnen lossen en zijn flinke performance hits.quote:Op maandag 14 november 2011 13:28 schreef KomtTijd... het volgende:
Je hebt het hier dus over "using temporary", neem ik aan?
Dan weet ik dat ik dat voortaan in de gaten moet houden.
Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
MD5 is imo een beetje verouderd, simpele wachtwoorden zijn eenvoudig te achterhalen. Ik zou bijvoorbeeld SHA gebruiken.quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
Vanuit welke user stuur je hem handmatig aan en vanuit welke user via de scheduled task?quote:Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.
ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven
Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?
Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.
Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
![]()
![]()
![]()
![]()
Rechtenprobleem op de map ivm taak scheduler en account waaronder deze draait.quote:Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.
ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven
Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?
Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.
Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
![]()
![]()
![]()
![]()
Je zet ten eerste nooit een PW uberhaupt in een cookie. Je onthoudt de sessie. Daarnaast is MD5 achterhaald. Tenslotte zie ik nergens salts genoemd en ik hoop niet dat je overweegt MD5 passwords unsalted in je DB op te slaan?quote:Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.
De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.
voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar
nadelen:
- cookies?
dat doe ik ook wel, had alleen geen idee hoe ik een sessie aan kon makenquote:Op dinsdag 15 november 2011 09:25 schreef boem-dikkie het volgende:
[..]
Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.
1 | /bin/sh: /home/frietkot/domains/naam.nl/public_html/includes/cronjobs/cronjob_aanmaningen.php: Permission denied |
Je moet 'cronjob_aanmaningen.php' zo chmodden dat je rechten hebt om het uit te voeren.quote:Op dinsdag 15 november 2011 10:56 schreef cablegunmaster het volgende:
[ code verwijderd ]
Eeuhm...Admin vragen op de server perhaps denk ik nu
![]()
Donequote:Op dinsdag 15 november 2011 10:59 schreef The_Terminator het volgende:
[..]
Je moet 'cronjob_aanmaningen.php' zo chmodden dat je rechten hebt om het uit te voeren.
Iets in die richtingquote:Op dinsdag 15 november 2011 11:27 schreef GlowMouse het volgende:
executable maken is niet nodig, je moet het door php laten uitvoeren:
php /home/frietkot/domains/naam.nl/public_html/includes/cronjobs/cronjob_aanmaningen.php
1 2 3 | <?php htmlentities($data[$key],ENT_COMPAT,"ISO-8859-1",false); ?> |
Wordtquote:“That’s a ‘magic’ sock.”
zonder de juiste encodering.quote:�That’s a �magic� sock.�
1 | “ |
1 | ” |
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 | <?php /** * Converts smart quotes (“,”,‘,’) and em-dash * * This function is needed because ISO-8859-1 (and by extend ISO-8859-15) * doesn't support these characters, so we need to convert them ourselves. * * @param string $text * @return string */ function CleanupSmartQuotes($text){ $badwordchars = array( chr(145), chr(146), chr(147), chr(148), chr(151) ); $fixedwordchars = array( "'", "'", '"', '"', '—' ); return str_replace($badwordchars,$fixedwordchars,$text); } ?> |
Stuur je pagina dan ook netjes als UTF-8 door.quote:Op donderdag 17 november 2011 08:39 schreef Sitethief het volgende:
ISO-8859-1 is default in htmlentities, ik gebruik nu ISO-8859-15 vanwege "Western European, Latin-9. Adds the Euro sign, French and Finnish letters missing in Latin-1 (ISO-8859-1). ".
Met UTF-8 verdwijnen bijvoorbeeld teksten met een µ volledig.
Dat, zelf zooi gaan replacen is gewoon dom.quote:Op donderdag 17 november 2011 11:03 schreef GlowMouse het volgende:
Stuur je pagina dan ook netjes als UTF-8 door.
quote:Op donderdag 17 november 2011 11:06 schreef Catbert het volgende:
[..]
Dat, zelf zooi gaan replacen is gewoon dom.
1 2 3 4 5 6 7 8 | function feedToBrowser($file, $formatID) { header("Content-type: " . toImageHeader($formatID)); header("Content-length: " . filesize($file)); header("Expires: Mon, 1 Jul 2027 05:00:00 GMT\n"); // doorsturen readfile($file); exit(); } |
Daar doelde ik (voornamelijk) op jaquote:Op donderdag 17 november 2011 21:31 schreef KomtTijd... het volgende:
En ja, een enter voor- of na je <?php ?> tags is óók output!
je ziet ''readfile' staan?quote:Op vrijdag 18 november 2011 01:45 schreef cablegunmaster het volgende:
Ik hoop voor je dat je niet direct alle bestanden in de DB opslaat..
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |