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 testen )quote: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 posts . Warnings dus. Dan moet je dus libxml_use_internal_errors gebruiken als je de warnings wilt afhandelen.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.
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. Ik ken die functie ook nog niet, dus ik moet even kijken of het resultaat daarvan wel door Codeigniter geaccepteerd wordt.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 |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |