Dit is dan per DOM-element (wat sowieso al een aanrader is om te doen), even niet helemaal goed naar de vraag gekeken. In zo'n hele post is het bijna geen doen meer om nog een RE te gebruiken idd.quote:Op zaterdag 7 november 2015 18:32 schreef Light het volgende:
[..]
En dan moet je er nog rekening mee houden dat die class kan worden voorafgegaan en/of gevolgd door een andere class. En dat een afbeelding zonder die class gevolgd kan worden door een met die class, dan moet je wel de goede afbeelding verwijderen. En over een half jaar moet je ook nog snappen wat de regex doet (ook als het er niet in commentaar bij staat).
Dank, dat had ik zelf ook wel kunnen bedenken natuurlijkquote:Op zaterdag 7 november 2015 18:03 schreef Light het volgende:
[..]
Some people, when confronted with a problem, think
“I know, I'll use regular expressions.” Now they have two problems. (bron / meer info)
Ik zou DOMDocument gebruiken, in combinatie met DOMNode::removeChild() (die je gewoon hebt, want DOMDocument extends DOMNode).
Met zoveel eisen zou ik aan de voorkant met javascript sowieso realtime een "checklist" afvinken terwijl de gebruiker typt.quote:Op zaterdag 7 november 2015 19:08 schreef Chandler het volgende:
Vraagje, stel je hebt een formulier met gebruikersnaam en wachtwoord.
Beide elementen moeten voldoen aan veel eisen.
Naam ; minimaal 6, maximaal 30 tekens. Geen spaties en bepaalde karakters, Geen herhalingen van letters (3x een e achter elkaar bv). En minimaal 1 hoofdletter.
Wachtwoord: minimaal 6, maximaal 30 tekens. Geen spaties. Minimaal 1 teken, 1 cijfer en 1 hoofdletter.
Hoe ga je om met gevonden fouten als je het formulier controleert??
Waarom maximaal 30 tekens en geen spaties voor een wachtwoord? Als het goed is, sla je ze toch goed gehashed op en dan maken spaties en het aantal tekens niet zo heel veel uit.quote:Op zaterdag 7 november 2015 19:08 schreef Chandler het volgende:
Vraagje, stel je hebt een formulier met gebruikersnaam en wachtwoord.
Beide elementen moeten voldoen aan veel eisen.
Naam ; minimaal 6, maximaal 30 tekens. Geen spaties en bepaalde karakters, Geen herhalingen van letters (3x een e achter elkaar bv). En minimaal 1 hoofdletter.
Wachtwoord: minimaal 6, maximaal 30 tekens. Geen spaties. Minimaal 1 teken, 1 cijfer en 1 hoofdletter.
Ik heb ondertussen ook even geprobeerd dit op te lossen en er zijn een paar punten waar je rekening mee moet houden. Dit is mijn oplossing:quote:Op zaterdag 7 november 2015 18:46 schreef bondage het volgende:
[..]
Dank, dat had ik zelf ook wel kunnen bedenken 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 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 | <?php class FokDemo { /** @var DOMDocument */ private $document; /** * FokDemo constructor. */ public function __construct() { $this->document = new DOMDocument(); $this->document->preserveWhiteSpace = true; } /** * @param string $content */ public function setContent($content) { @$this->document->loadHTML($content); } /** * @return string */ public function getContent() { return $this->document->saveHTML(); } /** * @param string $tagName * @param array $exceptWithClass * * @return int The number of removed items */ public function removeElements($tagName, array $exceptWithClass = array()) { $removed = 0; $doc = $this->document; // This list is dynamic. Any change in the document will immediately be reflected here $nodes = $doc->getElementsByTagName($tagName); for ($nodeIndex = $nodes->length - 1; $nodeIndex >= 0; $nodeIndex--) { $node = $nodes->item($nodeIndex); if ($this->shouldNodeBeRemoved($node, $exceptWithClass)) { $parent = $node->parentNode; $parent->removeChild($node); $removed++; } } return $removed; } /** * @param DOMNode $node * @param array $exceptWithClass * * @return bool */ private function shouldNodeBeRemoved($node, array $exceptWithClass) { if ($exceptWithClass === array()) { $result = true; } else { $classAttribute = $node->attributes->getNamedItem('class'); if ($classAttribute instanceof DOMAttr) { $classNames = explode(' ', $classAttribute->value); $result = array_intersect($exceptWithClass, $classNames) === array(); } else { $result = true; } } return $result; } } ?> |
Dankje Ik wou er vandaag even mee aan de slag en dit komt goed van pas, hoef ik het zelf niet uit te zoeken.quote:Op zaterdag 7 november 2015 22:58 schreef Light het volgende:
[..]
Ik heb ondertussen ook even geprobeerd dit op te lossen en er zijn een paar punten waar je rekening mee moet houden. Dit is mijn oplossing:
[ code verwijderd ]
Was even een voorbeeld.quote:Op zaterdag 7 november 2015 20:46 schreef Light het volgende:
Waarom maximaal 30 tekens en geen spaties voor een wachtwoord? Als het goed is, sla je ze toch goed gehashed op en dan maken spaties en het aantal tekens niet zo heel veel uit.
Inmiddels geïmplementeerd en werkt, mijn dank is groot. Heb wel een kleine wijziging aangebracht omdat ik (indien gewenst) het element graag wil vervangen.quote:Op zaterdag 7 november 2015 22:58 schreef Light het volgende:
[..]
Ik heb ondertussen ook even geprobeerd dit op te lossen en er zijn een paar punten waar je rekening mee moet houden. Dit is mijn oplossing:
[ code verwijderd ]
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 | <?php public function removeElements($tagName, array $exceptWithClass = array(), $replaceWith = array()) { $removed = 0; $doc = $this->document; // This list is dynamic. Any change in the document will immediately be reflected here $nodes = $doc->getElementsByTagName($tagName); for($nodeIndex = $nodes->length - 1; $nodeIndex >= 0; $nodeIndex--) { $node = $nodes->item($nodeIndex); if($this->shouldNodeBeRemoved($node, $exceptWithClass)) { $parent = $node->parentNode; if(isset($replaceWith['element']) && isset($replaceWith['contents'])) { $replace_node = $doc->createElement($replaceWith['element'], $replaceWith['contents']); $parent->replaceChild($replace_node, $node); }else{ $parent->removeChild($node); } $removed++; } } return $removed; } ?> |
Iets specifiekerquote:Op maandag 16 november 2015 15:54 schreef Ser_Ciappelletto het volgende:
Heeft iemand hier ervaring met utf-8 troubleshooting?
Ik heb een html-pagina die met require_once een php-scriptje aanroept, dat Griekse letters uit een MySQL-database queriet en in een tabel echoot.quote:
Lastig om zo te zeggen waar het probleem zit.quote:Op maandag 16 november 2015 16:10 schreef Ser_Ciappelletto het volgende:
[..]
Ik heb een html-pagina die met require_once een php-scriptje aanroept, dat Griekse letters uit een MySQL-database queriet en in een tabel echoot.
De database is gecreëerd met DEFAULT CHARACTER SET "utf-8" en DEFAULT COLLATE utf8_general_ci. De default charset is in php.ini ingestelt op "utf-8". De HTML-pagina heeft in de header <meta charset="utf8"> staan. En nog krijg ik allemaal ????'jes in plaats Griekse letters...
1 | header('Content-Type: text/html; charset=utf-8'); |
Die had ik al gevonden, maar dat helpt helaas niet.quote:Op maandag 16 november 2015 16:13 schreef Aether het volgende:
[..]
Lastig om zo te zeggen waar het probleem zit.
Probeer eens bovenin je script:
[ code verwijderd ]
Websites die zulke eisen stellen aan wachtwoorden moeten door de internetshredder. Wat een ellende.quote:Op zaterdag 7 november 2015 19:08 schreef Chandler het volgende:
Vraagje, stel je hebt een formulier met gebruikersnaam en wachtwoord.
Beide elementen moeten voldoen aan veel eisen.
Naam ; minimaal 6, maximaal 30 tekens. Geen spaties en bepaalde karakters, Geen herhalingen van letters (3x een e achter elkaar bv). En minimaal 1 hoofdletter.
Wachtwoord: minimaal 6, maximaal 30 tekens. Geen spaties. Minimaal 1 teken, 1 cijfer en 1 hoofdletter.
Hoe ga je om met gevonden fouten als je het formulier controleert??
Dit toevoegen werkt om de een of andere reden wel...quote:Op maandag 16 november 2015 16:16 schreef Ser_Ciappelletto het volgende:
[..]
Die had ik al gevonden, maar dat helpt helaas niet.
1 | mysqli_set_charset($conn, "utf8"); |
Aan te raden is om PDO te gebruiken i.p.v. mysqli.quote:Op maandag 16 november 2015 17:33 schreef Ser_Ciappelletto het volgende:
[..]
Dit toevoegen werkt om de een of andere reden wel...
[ code verwijderd ]
Wat is het verschil? Zijn die commando's verder hetzelfde?quote:Op dinsdag 17 november 2015 20:50 schreef robin007bond het volgende:
[..]
Aan te raden is om PDO te gebruiken i.p.v. mysqli.
PDO heeft ondersteuning voor meerdere databases en is objectgeoriënteerd. Eigenlijk is PDO een abstractielaag.quote:Op dinsdag 17 november 2015 20:53 schreef Ser_Ciappelletto het volgende:
[..]
Wat is het verschil? Zijn die commando's verder hetzelfde?
Hmm, die syntax ziet er in ieder geval al een stuk logischer uit dan die van mysqli.quote:Op dinsdag 17 november 2015 21:03 schreef robin007bond het volgende:
[..]
PDO heeft ondersteuning voor meerdere databases en is objectgeoriënteerd. Eigenlijk is PDO een abstractielaag.
En als je migreert naar een andere database hoef je maar één tekstregeltje veranderen. Dat is een groot voordeel.quote:Op dinsdag 17 november 2015 21:09 schreef Ser_Ciappelletto het volgende:
[..]
Hmm, die syntax ziet er in ieder geval al een stuk logischer uit dan die van mysqli.
Met zulke wachtwoordeisen hoef je je sowieso geen zorgen te maken om de functies om een nieuwe gebruiker aan te maken. Die worden dan toch nooit aangeroepenquote:Op maandag 16 november 2015 16:23 schreef Boze_Appel het volgende:
[..]
Websites die zulke eisen stellen aan wachtwoorden moeten door de internetshredder. Wat een ellende.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |