Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.quote:Op zondag 26 mei 2013 22:03 schreef Chandler het volgende:
[..]
Correct, was: CURLOPT_FOLLOWLOCATION en die staat er wel tussen
krijg je als je met 10 dingen te gelijk aan het doen bent
[..]
Case is dat ik wil uitvissen of er een redirect plaats vind, ja, dan geen data laden, nee dan wel data laden. want een redirect is voor mijn project niet nodig, alleen de directe data... tenzij een redirect naar het zelfde domein is.. maar het laatste is van mij voor ondergeschikt belang!.
Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegenquote:Op zondag 26 mei 2013 22:13 schreef slacker_nl het volgende:
[..]
Dan moet je een no-follow doen, als 302 en location header naar iets wijst wat binnen je domein zit, daarop weer een request doen, zonder no-follow.
Je doet je ondertitel eer aan nu.quote:Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:
[..]
Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen
en bedankt!quote:
probeer deze eensquote:Op zondag 26 mei 2013 21:39 schreef Chandler het volgende:
[..]
Top, ik ga het ff proberen!
Andere vraag; wanneer ik met Domdocument een html pagina wil laden krijg ik de volgende foutmelding.
Warning: DOMDocument::loadHTML(): htmlParseEntityRef: expecting ';' in Entity, line: 1354
Nu snap ik best dat niet iedere pagina een nette opbouw heeft, maar wil eigenlijk geen foutmeldingen zien, gewoon parsen totdat hij niet meer kan parsen oid?! nu dacht ik laat ik kijken welke opties ik mee kan geven (maar 1) en die vond ik hier: http://www.php.net/manual/en/libxml.constants.php
Maar daarvan heb ik meerdere geprobeerd maar blijf errors opvangen... alleen een vieze @ werktiemand een idee hoe ik dat kan oplossen? Ps domdocument gebruik ik om links uit te kunnen lezen.
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.quote:Op zondag 26 mei 2013 22:17 schreef Chandler het volgende:
[..]
Mocht ik deze nodig zijn, dan kan ik deze natuurlijk uitlezen en herschrijven indien nodig (location: index.php naar http://www.domein.nl/index.php) en aan mijn queue toevoegen
Had eerst een extra functie in mijn script met get_headers maar die vreet nogal wat resources en maakt het script stukken slomer....
Werkte niet, maar heb alleen true geprobeerd, misschien had ik deze wel op false moeten zetten (lol, kan nu niet ff testenquote:Op zondag 26 mei 2013 22:24 schreef wipes66 het volgende:
probeer deze eens
http://nl3.php.net/manual(...)-internal-errors.php
Daarom gebruik ik de queue om geen recursive call's te doen anders had ik die queue niet nodig gehad, dat was het eerste probleem die ik 4 weken geleden moest aanpakkenquote:Op zondag 26 mei 2013 22:30 schreef slacker_nl het volgende:
Ik zou gewoon heel simpel een functie schrijven die de response parsed indien 200 http_code, bij een 30x http_code de redirect_url pakt, checked of het binnen het domein valt, indien ja, dan een recursive call doet (mss wel oppassen met redirect loops), en anders.. iets.
| 1 2 3 4 5 6 7 8 | <?php $doc = new DOMDocument(); var_dump($doc->loadhtml("<html dxxx<nbody>haha<html>test")); var_dump($doc->loadhtml("<html><head></head><body><p>lol</p></body></html>")); exit; ?> |
Geeft het een foutmelding of een warning? Uit de documentatie:quote:Op dinsdag 28 mei 2013 09:27 schreef Chandler het volgende:
Waarom geeft het laden van een document via dom met loadhtml fouten maar true als resultaat?
[ code verwijderd ]
Beiden geven true terwijl de eerste een foutmelding geeft en dus een false zou moeten geven...
Edit: ik lees nu pas je eerdere postsquote:While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...quote:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php var_dump(libxml_use_internal_errors(true)); $doc = new DOMDocument(); if (!$doc->loadhtml("<html dxxx<nbody>haha<html>test")) { echo 'process error?'; } if (!$doc->loadhtml("<html><head></head><body><p>lol</p></body></html>")) { echo 'process error1?'; } exit; ?> |
Nee dat staat er niet, er staat:quote:Op dinsdag 28 mei 2013 16:06 schreef Chandler het volgende:
[..]
Ook daarmee krijg ik alleen maar 'true' terug... en er staat toch echt op php.net dat er een false gegeven zou moeten worden...
quote:This function returns the previous value of use_errors
Heb je ook gekeken naar de functie libxml_get_errors? Het voorbeeld wat ze daarbij geven doet precies wat jij wil, namelijk controleren op verkeerde xml...quote:libxml_use_internal_errors(true);
[ code verwijderd ]
zou dus een foutmelding moeten geven, maar niet dus
maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.quote:Returns TRUE on success or FALSE on failure. If called statically, returns a DOMDocument or FALSE on failure.
| 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 | <?php $errors = array(); libxml_use_internal_errors(true); $doc = new DOMDocument(); $doc->loadhtml("<html dxxx<nbody>haha<html>test"); $errors = libxml_get_errors(); libxml_clear_errors(); if (count($errors) > 0) { echo 'Moet een fout geven! FOUT!'; } $doc->loadhtml("<html><head></head><body><p>lol</p></body></html>"); $errors = libxml_get_errors(); libxml_clear_errors(); if (count($errors) > 0) { echo 'Als je dit ziet, is er iets echt goed mis....'; } // nog sneller if ($doc->loadHtml("<html dxxx<nbody>haha<html>test") && count(libxml_get_errors()) > 0) { echo 'html is fout 1'; } else { echo 'html is goed 1'; } libxml_clear_errors(); if ($doc->loadHtml("<html><head></head><body><p>lol</p></body></html>") && count(libxml_get_errors()) > 0) { echo 'html is fout 2'; } else { echo 'html is goed 2'; } exit; ?> |
Als je iets verder leest staat er dit:quote:Op dinsdag 28 mei 2013 16:43 schreef Chandler het volgende:
Ik doelde meer op domdocument
http://nl1.php.net/manual/en/domdocument.loadhtml.php
[..]
maar goed,ik heb het nu wel, al is het wel een in mijn ogen niet zo'n nette oplossing.
[ code verwijderd ]
Je huidige oplossing lijkt mij dus goed en ook volgens de documentatie.quote:While malformed HTML should load successfully, this function may generate E_WARNING errors when it encounters bad markup. libxml's error handling functions may be used to handle these errors.
| 1 2 3 | <?php include "foto.php" ; ?> |
| 1 2 3 | <?php include "fotos/foto.php" ; ?> |
| 1 2 3 4 5 6 7 8 | <?php var_dump(explode(':', get_include_path())); // array (size=3) // 0 => string '.' (length=1) <-- verwijst naar directory van het huidige php-bestand // 1 => string '/usr/share/php' (length=14) // 2 => string '/usr/share/pear' (length=15) ?> |
| 1 2 3 4 5 6 7 | player id | name ------------ 1 | henk 2 | truus 3 | sjaak |
| 1 2 3 4 5 6 7 | game id | player_id | character_id | waves | score ----------------------------------------------- 1 | 2 | 5 | 12 | 9000 2 | 5 | 9 | 8 | 4000 3 | 2 | 4 | 15 | 12000 |
| 1 2 3 4 | SELECT max(score) as score, character_id, waves FROM game GROUP BY user_id ORDER BY score |
Jawel, want het is de bedoeling dat er geen dubbele users in staan, maar alleen de maximale score van een user.quote:Op vrijdag 31 mei 2013 16:58 schreef KomtTijd... het volgende:
Je MAX(score) en GROUP BY zijn toch helemaal niet nodig?
| 1 2 3 4 5 6 7 8 9 10 | SELECT MAX(g.scores) as hiscore, g.character_id, g.waves, FROM games as g JOIN games as g2 on hiscore = g2.scores where g2.player_id = g.player_id ; |
| 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 | <pre> <?php $projects = array(1 => array("url" => "http://www/testredirect.php?x=5"), 2 => array("url" => "http://www/testredirect.php?x=2"), 3 => array("url" => "http://www/testerror.php"), 4 => array("url" => "http://www/testerror.php?x=10"), 5 => array("url" => "http://www/testerror.php?x=5"), 6 => array("url" => "http://www/testerror.php?x=22")); $mh = curl_multi_init(); $handles = array(); foreach ($projects AS $key => $project) { echo $project['url'] . '<br />'; $handles[$key] = curl_init($project['url']); curl_setopt($handles[$key], CURLOPT_TIMEOUT, 20); curl_setopt($handles[$key], CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($handles[$key], CURLOPT_HEADER, true); curl_setopt($handles[$key], CURLOPT_AUTOREFERER, true); curl_setopt($handles[$key], CURLOPT_FAILONERROR, true); curl_setopt($handles[$key], CURLOPT_RETURNTRANSFER, true); curl_setopt($handles[$key], CURLOPT_SSL_VERIFYHOST, false); curl_setopt($handles[$key], CURLOPT_SSL_VERIFYPEER, false); curl_setopt($handles[$key], CURLOPT_FOLLOWLOCATION, true); // true for test curl_setopt($handles[$key], CURLINFO_EFFECTIVE_URL, true); curl_setopt($handles[$key], CURLINFO_HEADER_OUT, true); curl_setopt($handles[$key], CURLINFO_REDIRECT_COUNT, true); curl_multi_add_handle($mh, $handles[$key]); } $running = null; do { curl_multi_exec($mh, $running); } while ($running > 0); foreach ($handles AS $key => $value) { $break = false; $curl_error = curl_error($value); // fetch error, if any print_r($curl_error); echo '<br />'; print_r(curl_getinfo($value)); echo '<br />'; if (strlen($curl_error) == 0) { print_r(curl_multi_getcontent($value)); echo '<br />'; } else { echo ("error<br/>"); } } |
Dit heb je toch al een keertje eerder gedaan? Een paar posts geleden zelfs.quote:Op zaterdag 1 juni 2013 12:47 schreef Chandler het volgende:
Heeft iemand een oplossing voor het volgende?
| 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 | <?php error_reporting(E_ALL); $projects = array('opn' => array("url" => "http://www.opperschaap.net"), 'opn_not_found' => array("url" => "http://www.opperschaap.net/die"), 'redir' => array("url" => "http://www.example.com"), ); $mh = curl_multi_init(); $handles = array(); $setopt_array = array( CURLOPT_TIMEOUT => 20, CURLOPT_CONNECTTIMEOUT => 20, CURLOPT_HEADER => true, CURLOPT_AUTOREFERER => true, CURLOPT_FAILONERROR => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_FOLLOWLOCATION => true, // true for test ); foreach ($projects AS $key => $project) { printf("URL: %s\n", $project['url']); $ch = curl_init($project['url']); curl_setopt_array($ch, $setopt_array); curl_multi_add_handle($mh, $ch); $handles[$key] = $ch; } $running = null; do { curl_multi_exec($mh, $running); } while ($running > 0); foreach ($projects AS $key => $project) { print "$key\n"; $ch = $handles[$key]; $curl_error = curl_error($ch); // fetch error, if any $curl_info = (curl_getinfo($ch)); if ($project['url'] != $curl_info['url']) { printf("Redirected from %s to %s\n", $project['url'], $curl_info['url']); } if ($curl_info['http_code'] == 200) { print_r(curl_multi_getcontent($ch)); } else { printf("HTTP code not 200: %d\n", $curl_info['http_code']); } print "\n"; } ?> |
De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag alquote:Op zondag 2 juni 2013 16:04 schreef pascal08 het volgende:
Ik zit met een dilemma. Mijn zoekfunctie werkt met ajax en json. Ik zou POST en GET kunnen gebruiken. POST heeft als nadeel dat ik een formtoken moet meesturen ivm csrf en heeft volgens mij ook als nadeel dat er niets gecached kan worden.
Kwestie van op de juiste manier escapen.quote:Met GET daarentegen zit ik met het probleem dat Codeigniter geen tekens zoals een apostrof tolereert. Ik weet dat het mogelijk is om dit uit te zetten, maar bij deze instelling staat duidelijk vermeldt dat je niets moet veranderen tenzij je weet waar je mee bezig bent, en daar zit het probleem, dat weet ik dus niet.
Gewoon GET gebruiken. De intentie achter GET is juist het ophalen van data van de server. POST, PUT en DELETE zijn ontwikkeld om data op de server te veranderen.quote:Google en andere grote sites werken met GET zag ik via de Chrome Console. Echter kan ik daar wel gewoon zoeken op een apostrof. De apostrof wordt dan omgezet in %27. Kan iemand mij uitleggen welke methode geschikter is voor mijn situatie en hoe ik eventueel veilig tekens zoals een apostrof in de URL toelaat bij een GET request?
Dit wist ik.quote:Op zondag 2 juni 2013 17:25 schreef zoem het volgende:
De reden dat een csrf-token wordt geadviseerd bij POST is juist omdat POST wordt gebruikt voor het veranderen van data op de server. Daarmee beantwoord ik eigenlijk je vraag al
Hier had ik nog niet aan gedacht.quote:Kwestie van op de juiste manier escapen.
URL Encode a string in jQuery for an AJAX request
Ook handig zijn php's urlencode en json_encode
| 1 | .replace("'", "%27") |
| 1 | update table set status = 90 where to_Char(act_starttime, 'YYYYIW') = '201318' |
| 1 2 3 4 | FOUT in regel 1: .ORA-03113: Einde-van-bestand op communicatiekanaal. Proces-ID: 0 Sessie-ID: 1484 serienummer: 3872 |
Als je hier een date van maakt, wat bedoel je precies?quote:Op dinsdag 4 juni 2013 08:45 schreef Cue_ het volgende:
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
[ code verwijderd ]
Krijg ik de volgende foutmelding
[ code verwijderd ]
act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.
Iemand enig idee hoe dit kan/veroorzaakt wordt?
Alter table modify act_starttime datequote:Op dinsdag 4 juni 2013 08:58 schreef slacker_nl het volgende:
Als je hier een date van maakt, wat bedoel je precies?
http://psoug.org/reference/timestamp.html
; vergeten?quote:Op dinsdag 4 juni 2013 08:45 schreef Cue_ het volgende:
Ik zit met een Oracle vraagje.
Als ik de volgende query uitvoer
[ code verwijderd ]
Krijg ik de volgende foutmelding
[ code verwijderd ]
act_starttime is in eerste instantie een Timestamp. Wanneer ik hier een date van maak, dan doet hij het wel gewoon.
Iemand enig idee hoe dit kan/veroorzaakt wordt?
| 1 2 3 4 5 | BEGIN; update ... ROLLBACK; -- eventueel commit |
| 1 | create index idx_match_actstarttime on table (to_char(act_starttime, 'YYYYIW') ); |
Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.quote:Op dinsdag 4 juni 2013 09:51 schreef Cue_ het volgende:
[..]
Zonder index doet ie het perfect.. met index krijg ik die foutmelding.
quote:Op dinsdag 4 juni 2013 10:02 schreef KomtTijd... het volgende:
Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.
Er is altijd nog fantoomjeuk.quote:Op dinsdag 4 juni 2013 10:02 schreef KomtTijd... het volgende:
[..]
Da's wel een voorbarige conclusie. Als je je been eraf hakt is de jeuk aan je teen ook over.
quote:Op dinsdag 4 juni 2013 10:02 schreef zoem het volgende:
De errorcode is erg generiek, wat staat er in de alert log?
| 1 2 3 | Tue Jun 4 10:59:04 2013 Errors in file /oracle/admin/hkpora03/udump/hkpora03_ora_186.trc: ORA-07445: exception encountered: core dump [evaopn2()+228] [SIGSEGV] [Address not mapped to object] [0x000000000] [] [] |
quote:
07445 is vaak gerelateerd aan een bug in Oracle.quote:So the likeliest causes:
- The server process you were connected to crashed.
- A network problem broke your connection.
- Someone manually killed the process on the server you were connected to.
When the server process you were connected to crashed, it threw an ORA-07445. That error, along with ORA-00600, are relatively famous Oracle errors. They're functionally unhandled exceptions, with an ORA-00600 being an unhandled exception in the Oracle code, whereas ORA-07445 is a fatal signal from the OS, generally because Oracle did something that the OS didn't approve of, so the OS killed the Oracle process.
quote:There was an index on the two date columns, TRANS_FROM and TRANS_TO. We droppped this. It worked.
After a bit more investigation we found that with few rows in the join, the index was not used but as the number of rows in the join increased, the query plan would change and the offending index would be used. This explained why it was an intermittent problem.
ja dat dacht ik ook. maar ik krijg geen foutmelding hierzo, maar misschien zit er iets fout in mijn custom error handlerquote:Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.
PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.phpquote:Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.
PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
ik keek er ook van opquote:Op dinsdag 4 juni 2013 12:59 schreef slacker_nl het volgende:
[..]
Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.php
Wat kut is dat zeg, eigenlijk, best wel.
In dat geval, leuk leesvoer: PHP: a fractal of bad designquote:Op dinsdag 4 juni 2013 12:59 schreef slacker_nl het volgende:
[..]
Hier staat het beschreven: http://php.net/manual/en/language.types.type-juggling.php
Wat kut is dat zeg, eigenlijk, best wel.
Ik heb wel eens zo'n melding gekregen als ik een niet-bestaand array-element probeerde te lezen, maar tijdens het zetten krijg je volgens mij nooit een melding.quote:Op dinsdag 4 juni 2013 12:34 schreef zoem het volgende:
Ja en nee.
PHP maakt automagisch een array aan en vult deze met de opgegeven key en value. Echter, als je error_reporting en display_errors aanzet, zou je een index undefined notice kunnen krijgen.
Dat zou goed kunnen kloppen, wist het niet zo snel uit m'n hoofd. Ik ontwikkel in ieder geval altijd met notice aan (error_reporting(-1) ), dat levert doorgaans betere code op.quote:Op dinsdag 4 juni 2013 14:05 schreef Tijn het volgende:
[..]
Ik heb wel eens zo'n melding gekregen als ik een niet-bestaand array-element probeerde te lezen, maar tijdens het zetten krijg je volgens mij nooit een melding.
quote:Op dinsdag 4 juni 2013 13:35 schreef zoem het volgende:
[..]
In dat geval, leuk leesvoer: PHP: a fractal of bad design
| 1 2 3 4 5 6 7 8 9 | 14:15 < slacker> !php 14:16 <@digiweed> slacker: "php" : (#1) diy framework: http://toys.lerdorf.com/archives/38-The-no-framework-PHP-MVC-framework.html, or (#2) I chose PHP because I thought it would be a better fit for the community I was targeting, which tended to have a lot of non-programmers in it. -- Patrick Michaud, or (#3) you don't code php. you merely edit it until it works., or (#4) haat, or (#5) http://wiki.phpbb.com/Best_Practices:PHP, (1 more message) 14:16 < slacker> !more 14:16 <@digiweed> slacker: or (#6) fail, or (#7) http://208.116.9.205/10/content/15790/15.jpg, or (#8) easy slut, or (#9) http://bugs.php.net/bug.php?id=54325, or (#10) http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/, or (#11) https://bugs.php.net/bug.php?id=18556 |
Leeft dat irc-kanaal nog steeds ja?quote:
Ja, dat irc-kanaal leeft nog steeds.quote:Op dinsdag 4 juni 2013 14:31 schreef zoem het volgende:
Leeft dat irc-kanaal nog steeds ja?![]()
Php is op zich helemaal niet verkeerd, alleen zijn er door de tijd heen rare beslissingen genomen (zie dus dat blogitem), waardoor er dingen zijn ontstaan die nooit het licht hebben mogen zien. De slechte reputatie is ook te danken de laagdrempeligheid waardoor veel bad practices de wereld in zijn geholpen door onbekwame programmeurs. Maar als je weet wat je doet kun je leuke dingen maken met php.
| 1 2 3 4 5 6 7 8 | > []+[] '' > []+{} '[object Object]' > {}+[] '[object Object]' > {}+{} '[object Object][object Object]' |
| 1 2 3 4 5 6 7 8 | >>> []+[] "" >>> []+{} "[object Object]" >>> {}+[] 0 >>> {}+{} NaN |
Wat je weer tot in het bizarre kan doorvoeren: www.jsfuck.comquote:Op dinsdag 4 juni 2013 15:35 schreef KomtTijd... het volgende:
NodeJS:
[ code verwijderd ]
SpiderMonkey & V8:
[ code verwijderd ]
"Get day of week" gegoogledquote:
Veel korter dan dit kan haast niet lijkt mequote:Op dinsdag 4 juni 2013 20:59 schreef d4v1d het volgende:
Ik heb nu een weeknummer, week 23. En een dag, donderdag in dit geval.
Nu is dit dus 6 juni 2013, maar hoe kan ik dit met php uitvinden?
| 1 2 3 4 | <?php echo strftime("%c", strtotime("next Thursday", strtotime("2013W23"))); // Thu Jun 6 00:00:00 2013 ?> |
quote:Op dinsdag 4 juni 2013 21:17 schreef zoem het volgende:
[..]
Veel korter dan dit kan haast niet lijkt me![]()
[ code verwijderd ]
| Forum Opties | |
|---|---|
| Forumhop: | |
| Hop naar: | |