Alsof dat ook maar iets uitmaakt, het feit dat je gewoon variabelen tussen tekst door kan typen is toch geweldig handig? Een beetje editor zorgt dan ook gelijk voor normale highlighting zodat het goed opvalt..quote:Op dinsdag 4 maart 2008 21:45 schreef Farenji het volgende:
Enkele quotes is sneller, omdat die niet geparsed hoeven te worden.
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 | function secureValue($value, $html){ if (!$html){ $value = strip_tags($value, '<b>,<a>,<i>,<u>,<img>'); }else{ $value = htmlnumericentities($value); } if (!$value){ $value = NULL; } switch (gettype($value)) { case 'boolean': return $value ? '1' : '0'; case 'integer': case 'double': return (string)$value; case 'string': return "'".addslashes($value)."'"; case 'array': case 'object': return "'".addslashes($value)."'"; default: //'resource', 'NULL', 'unknown type' return 'NULL'; die(); } } ?> |
Ja dat is wel handig, maar ik zelf zou het niet doen als ik een document met veel html zou hebben...quote:Op dinsdag 4 maart 2008 22:32 schreef Thomass het volgende:
[..]
Alsof dat ook maar iets uitmaakt, het feit dat je gewoon variabelen tussen tekst door kan typen is toch geweldig handig? Een beetje editor zorgt dan ook gelijk voor normale highlighting zodat het goed opvalt..
Voor het codevoorbeeld dat je geeft zijn nou precies de dubbele quotes bedoeld.quote:Op dinsdag 4 maart 2008 21:42 schreef Likkende_Lassie het volgende:
Maar zit er nog verschil in een enkele of een dubble quote, behalve dan dat je direct een $string dr in kan zetten? Dat los ik gewoon op door bv.. echo 'blablabla '.$string.' blablabla';
Dat maakt iets uit ja. En daarnaast is het gewoon netter. Ieder bedrijf wat ik ken heeft in hun coding standard opgenomen hoe je enkele en dubbele quotes moet gebruiken, en da's dus altijd enkele quotes tenzij er een variabele (e.d.) in moet die geparsed moet worden.quote:Op dinsdag 4 maart 2008 22:32 schreef Thomass het volgende:
Alsof dat ook maar iets uitmaakt, het feit dat je gewoon variabelen tussen tekst door kan typen is toch geweldig handig? Een beetje editor zorgt dan ook gelijk voor normale highlighting zodat het goed opvalt..
Voor een SQL query kan ik "mysql_real_escape_string" aanraden.quote:Op dinsdag 4 maart 2008 22:33 schreef Likkende_Lassie het volgende:
ok direct een stuk veiliger dus.. ?
Dit is trouwens hoe ik al mn querys check, veilig volgens jullie?
[ code verwijderd ]
1 2 3 | echo "In my opinion, red = $color['Blue']"; ?> |
1 2 3 | echo "In my opinion, red = $color["Blue"]"; ?> |
Doe mij maar:quote:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampplite\htdocs\test.php on line 5
1 2 3 | printf('In my opinion, red = %s', $list['Blue'] ); ?> |
Ik reageerde op:quote:Op dinsdag 4 maart 2008 23:04 schreef Likkende_Lassie het volgende:
line 5 ?
Doe mij maar:
[ code verwijderd ]
quote:Op dinsdag 4 maart 2008 22:32 schreef Thomass het volgende:
[..]
Alsof dat ook maar iets uitmaakt, het feit dat je gewoon variabelen tussen tekst door kan typen is toch geweldig handig? Een beetje editor zorgt dan ook gelijk voor normale highlighting zodat het goed opvalt..
En wat als je je systeem ooit multilingual wilt maken?quote:Op dinsdag 4 maart 2008 23:15 schreef CraZaay het volgende:
Doe het maar gewoon hoe het hoort:
[ code verwijderd ]
Het typt ook sneller, omdat je geen Shift nodig hebtquote:Op dinsdag 4 maart 2008 21:45 schreef Farenji het volgende:
Enkele quotes is sneller, omdat die niet geparsed hoeven te worden.
Dan moet je voordat je gaat bouwen eens goed nadenken en alleen sprintf() gebruiken waar het nodig is. Ik doelde hier vooral op het gebruik van single en double quotes en de error die jij kreeg, omdat je geen gebruik maakte van {}.quote:Op dinsdag 4 maart 2008 23:19 schreef Geqxon het volgende:
En wat als je je systeem ooit multilingual wilt maken?
HTML hoort überhaupt niet in een PHP string thuis, daar heb je templates voor. Hoe je de veriabelen voor in de templates vult bijvoorbeeld, daar ging het om. Daarnaast is het te pas en te onpas gebruiken van sprintf() nou ook niet direct efficiënter om te parsen dan een simpele string afaik.quote:Op woensdag 5 maart 2008 00:05 schreef Geqxon het volgende:
Ieder zo zijn ding. Ik zweer bij printf's en sprintf's. Heerlijk dat ik HTML structuur en data gescheiden kan houden, en ook dat ik geen redundantie heb als ik met placeholders werk. Heeft er mogelijk ook mee te maken dat ik veel in C zit de laatste tijd.
Voor een SQL query kan ik "PDO" aanraden.quote:Op dinsdag 4 maart 2008 22:56 schreef Geqxon het volgende:
[..]
Voor een SQL query kan ik "mysql_real_escape_string" aanraden.
Ik zou hem nooit gebruiken als ik jou was. Kijk eens goed naar wat eringaat en eruitkomt. Dat is compleet inconsequent: een 0 of de string "0" geeft NULL, een boolean false ook maar een boolean true geeft "1". Dat gaat geheid problemen opleveren; meestal is een 0 gewoon 0 en wil je absoluut niet dat die als NULL de database ingaat.quote:Op woensdag 5 maart 2008 20:50 schreef Likkende_Lassie het volgende:
ziet dr goed uit, het gebruik hiervan maakt t in 1 keer helemaal veilig ?
Wat vind je verder van mijn bovenstaande functie ?
Er zijn genoeg redenen om een NULL in je db te stoppen, maar NULL is heel wat anders dan 0 of "0".quote:Op woensdag 5 maart 2008 21:45 schreef CraZaay het volgende:
Waarom zou je nooit een NULL value in je database willen stoppen (even los van deze functie)?
Dohquote:Op woensdag 5 maart 2008 22:27 schreef Farenji het volgende:
[..]
Er zijn genoeg redenen om een NULL in je db te stoppen, maar NULL is heel wat anders dan 0 of "0".
Je kunt het doen als:quote:Op donderdag 6 maart 2008 00:23 schreef Likkende_Lassie het volgende:
Hee om nog even terug te komen op de functie printf, wat als je nou 2 keer een waarde wilt herhalen, hoe doe je dat? Moet je dan een nieuwe printf starten?
1 2 3 4 | sprintf('Waarde uno: %s Waarde dos: %s', $uno, $dos); sprintf('Waarde uno: %s nogmaals uno: %s', $uno, $uno); ?> |
1 2 3 4 5 | $format = 'The %2$s contains %1$d monkeys. That\'s a nice %2$s full of %1$d monkeys.'; printf($format, $num, $location); ?> |
Placeholders zijn zeker als je multilang gaat werken erg aantrekkelijkquote:Op donderdag 6 maart 2008 00:40 schreef Likkende_Lassie het volgende:
kijk dan zou met placeholders al weer iets aantrekkelijker vinden
Niet. Ik gebruik daar altijd placeholders voor. Die functie is compleet overbodig.Maar als je het toch handmatig wil doen: het enige wat van belang is dat je quotes escape't. En dat is precies wat mysql_real_escape doet. Al dat gegoochel met uitzoeken van type is niet nodig, als je een variabele als string behandelt dan zorgt php zelf wel voor de conversie. Niet dat dat altijd even consequent gebeurt maar dat is een ander verhaal.quote:Op woensdag 5 maart 2008 23:21 schreef Likkende_Lassie het volgende:
foutje van die die(); daar was ik nog wat aan t testen....
Farenji, hoe zou jij hem bouwen?
Lang niet altijd. Soms wil je wel eens een left join doen, en wil je onderscheid kunnen maken tussen records die niet matchen en records die wel matchen maar waar velden gewoon leeg zijn. Als je dan NULL in je db hebt staan voor een leeg veld kun je dat onderscheid niet meer maken en ben je de sjaak.quote:NULL gebruik ik eigenlijk bij elk veld in de database....altijd handig
Ik heb dezelfde vraagquote:Op donderdag 6 maart 2008 14:54 schreef Likkende_Lassie het volgende:
Waarom zou je onderscheid willen maken met een leeg veld of een veld met NULL... ?
Als je een varchar of text veld leeg wil laten dan kan je er meestal wel een lege string in zetten, maar bij andere veld types heb je niet altijd een logische default waarde. Een bedrag van 0.00 hoeft niet overeen te komen met een niet ingevuld bedrag.quote:Op donderdag 6 maart 2008 14:54 schreef Likkende_Lassie het volgende:
Waarom zou je onderscheid willen maken met een leeg veld of een veld met NULL... ?
1 2 3 | print_r($_SERVER); ?> |
Door je IP te matchen in 1 of andere database.quote:Op donderdag 6 maart 2008 16:58 schreef qu63 het volgende:
Ik probeer namelijk een beetje te begrijpen hoe 9292ov.nl weet waar ik ben als ik met mn mobiel de site bekijk
Grappig dat ik steeds een wisselend ip-adres heb als ik met mn mobiel online komquote:Op donderdag 6 maart 2008 17:03 schreef CraZaay het volgende:
[..]
Door je IP te matchen in 1 of andere database.
precies, ik hoopte dus uit te kunnen vinden hoe mn CellID meegstuurd wordt, maar dmv print_r($_server) lukt het dus niet..quote:Op donderdag 6 maart 2008 18:31 schreef Geqxon het volgende:
Dat is waarschijnlijk iets als Navizon. Maar hoe wap.mobiel.9292ov.nl aan je CellID komt??
Dat stond ook in mn vraag jaquote:Op donderdag 6 maart 2008 17:24 schreef CraZaay het volgende:
Ah, via je mobiel.
ik weet wel hoe het werkt, alleen wil ik weten hoe en wanneer zn mn cell-id 'uitlezen'. Mijn telefoon moet het toch op de een of andere manier meezendenquote:Op donderdag 6 maart 2008 19:06 schreef PiRANiA het volgende:
http://www.google.com/gmm/mylocation.html
Google doet het ook. bij de pagina staat een filmpje hoe ze het doen
Lekker prijzigquote:
GD is wat je zoekt...quote:Op donderdag 6 maart 2008 21:42 schreef __Saviour__ het volgende:
Ik wil dynamische tekst over een plaatje kunnen zetten, zoals sommigen bijv. een counter hebben in hun avatar.
Maar dan dat ik ook grootte en font e.d. kan instellen. Is daar ergens een mooi duidelijk voorbeeldscript of tutorial van?
1 2 3 4 5 6 7 8 9 10 | $dbnaam="db"; $fout = "FOUT: openen database mislukt"; $query="SELECT * FROM db.test"; mysql_select_db($dbnaam) or die($fout); $result = mysql_query($query) or die (mysql_error()); while (list($id , $invoer , $ndag, $dag , $maand , $jaar , $naam , $status , $titel , $tekst , $ip , $ref ) = mysql_fetch_row($result)){ echo $id; }; ?> |
En dank je wel.quote:
1 2 3 4 5 | FROM mytable WHERE option IN ('foo', 'bar', 'baz') GROUP BY id HAVING COUNT(*) = 3 |
Dan krijg je ook de regels die alleen aan 'wit' of alleen aan 'staaf' voldoen.quote:Op vrijdag 7 maart 2008 20:25 schreef broodmonkeh het volgende:
SELECT * FROM tabel WHERE type = 'wit' OR type = 'staaf'
zoiets?
dat is niet van en maar van ofquote:Op vrijdag 7 maart 2008 20:25 schreef broodmonkeh het volgende:
SELECT * FROM tabel WHERE type = 'wit' OR type = 'staaf'
zoiets?
maar dan nog is het niet zo dat er altijd drie van zijn dat kan ook 10 dingen bevatten en dan zoek ik toch alleen van de twee dingen uit het voorbeeldquote:Op vrijdag 7 maart 2008 20:41 schreef SuperRembo het volgende:
Je hebt n voorwaarden waaraan moet worden voldaan. Je haalt alle regels op die aan een van de voorwaarden voldoen. Dan groepeer je op id en hou je alleen de id's over die aan precies n voorwaarden voldoen.
[ code verwijderd ]
Hoe bedoel je dat? Moet het precies voldoen aan de voorwaarden of tenminste aan de voorwaarden? Als een item de types 'wit', 'staaf' en 'driehoek' bevat zoals nummer 145976 uit je voorbeeld, als je dan zoekt op 'wit' en 'staaf', wil je dan nummer 145976 terugkrijgen of niet?quote:Op vrijdag 7 maart 2008 20:48 schreef commentator het volgende:
maar dan nog is het niet zo dat er altijd drie van zijn dat kan ook 10 dingen bevatten en dan zoek ik toch alleen van de twee dingen uit het voorbeeld
In dat geval kan je die query die ik gaf gebruiken.quote:Op vrijdag 7 maart 2008 23:32 schreef commentator het volgende:
idd, als ik zoek op wit en staaf dan wil ik dat nummer terug krijgen (en maar 1keer dus) ook al komt het nummer met weet ik wat voor types nog voor
Het gaat om het volgende stukje code:quote:Notice: Undefined index: pagina in url on line 19
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | switch ($_GET['pagina']) { case 'home': include('home.php'); break; case 'personalTwee': include('personalTwee.php'); break; case 'uniRelatedEen': include('uniRelatedEen.php'); break; case 'uniRelatedTwee': include('uniRelatedTwee.php'); break; default: include('home.php'); break; } ?> |
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 | if (isSet($err) && strlen($err) == 0) { $sql = "SELECT id FROM banned WHERE ip = '" . mysql_escape_string($_POST['ban_ip']) . "' AND host = '" . mysql_escape_string($_POST['ban_host']) . "' AND titel = '" . mysql_escape_string($_POST['ban_titel']) . "' LIMIT 1"; $query = mysql_query($sql); $items = mysql_num_rows($query); if ($items == 0) { $sql = "INSERT INTO `banned` (`id`, `host`, `titel`, `sid`) VALUES ('" . mysql_escape_string($_POST['ban_ip']) . "', '" . mysql_escape_string($_POST['ban_host']) . "', '" . mysql_escape_string($_POST['ban_titel']) . "', '" . is_numeric($_POST['ban_sid']) ? $_POST['ban_sid'] : 0 . "')"; if (mysql_query($sql)) { parseRecord($tpl, "%bewaren%", true); } else { parseRecord($tpl, "%err%", "Fout bij opslaan van gegevens"); } } } ` else { if (isSet($err) && strlen($err) > 0) { parseRecord($tpl, "%err%", $err); } ` } ?> |
Dan help ik je hier maar gelijkquote:Op maandag 10 maart 2008 20:03 schreef GioStyle het volgende:
Ik heb mijn site iets aangepast en verder ingevuld.
Het principe werkt gewoon alleen ik krijg 1 foutmelding.
[..]
Het gaat om het volgende stukje code:
[ code verwijderd ]
Ik snap dat hij die code aangeeft omdat die pagina nog niet in de array voorkomt.
Maar hoe kan ik die fout mooi omzeilen?
Check je haakjes eens. En heb je wel eens gehoord van else if()? ;)quote:Op maandag 10 maart 2008 20:22 schreef Chandler het volgende:
Ik heb een klein probleempje maar kan het niet vinden, zit er al 20 minuten naar te kijken maar zie het niet.
[ code verwijderd ]
Bovenstaande stukje heb ik nu gecommend met /* en */ maar als ik deze verwijder krijg ik de volgende fout
Parse error: syntax error, unexpected '}' in D:\www\Bedrijf\www.ipcounter.nl\stat_counters.php on line 232
en regel 232 is de laatste regel in het voorbeeld.. Iemand een idee?
1 2 3 4 5 6 7 8 9 10 11 12 | if($Condition) { // bla } else if($Alternative) { // bla } else { // bla } ?> |
Wat doen die backticks daar?quote:Op maandag 10 maart 2008 20:22 schreef Chandler het volgende:
Parse error: syntax error, unexpected '}' in D:\www\Bedrijf\www.ipcounter.nl\stat_counters.php on line 232
(n)iemand?quote:Op donderdag 6 maart 2008 19:21 schreef qu63 het volgende:
[..]
ik weet wel hoe het werkt, alleen wil ik weten hoe en wanneer zn mn cell-id 'uitlezen'. Mijn telefoon moet het toch op de een of andere manier meezendenmaar dat onderscheppen is me dus nog niet gelukt..
quote:Op maandag 10 maart 2008 21:38 schreef qu63 het volgende:
[..]
(n)iemand?
of is dit een van de grote geheimen op het internet?
dus moet ik alleen zelf nog uitvinden hoe ik $data juist gevuld krijg?quote:
quote:Op maandag 10 maart 2008 20:03 schreef GioStyle het volgende:
Ik heb mijn site iets aangepast en verder ingevuld.
Het principe werkt gewoon alleen ik krijg 1 foutmelding.
[..]
Het gaat om het volgende stukje code:
[ code verwijderd ]
Ik snap dat hij die code aangeeft omdat die pagina nog niet in de array voorkomt.
Maar hoe kan ik die fout mooi omzeilen? :)
1 2 3 4 5 6 | $pagina = (!empty($_GET['pagina'])) ? $_GET['pagina'] : 'home'; switch ($pagina) { ... } ?> |
Waarom heb je na default nog een break?quote:Op maandag 10 maart 2008 20:03 schreef GioStyle het volgende:
Ik heb mijn site iets aangepast en verder ingevuld.
Het principe werkt gewoon alleen ik krijg 1 foutmelding.
[..]
Het gaat om het volgende stukje code:
[ code verwijderd ]
Ik snap dat hij die code aangeeft omdat die pagina nog niet in de array voorkomt.
Maar hoe kan ik die fout mooi omzeilen?
quote:Op maandag 10 maart 2008 20:03 schreef GioStyle het volgende:
Ik heb mijn site iets aangepast en verder ingevuld.
Het principe werkt gewoon alleen ik krijg 1 foutmelding.
[..]
Het gaat om het volgende stukje code:
[ code verwijderd ]
Ik snap dat hij die code aangeeft omdat die pagina nog niet in de array voorkomt.
Maar hoe kan ik die fout mooi omzeilen? :)
1 2 3 4 5 6 7 | $bestand = isset($_GET['pagina']) ? $_GET['pagina'] : 'home'; $bestand .= '.php'; if (file_exists($bestand)) include $bestand; else include 'error.php'; ?> |
Ik was nog niet klaar met coden héquote:Op maandag 10 maart 2008 20:41 schreef super-muffin het volgende:
Check je haakjes eens. En heb je wel eens gehoord van else if()?
[ code verwijderd ]
quote:
Dan zou ik toch voor de optie van Light gaan ipv deze gevaarlijke methode. Een bezoeker kan zo dus ieder .php bestand includen, zowel op het file system als remote.quote:
Omdat 'ie dat overzichtelijker vindt denk ik? In de meeste coding standards is het gangbaar om haakjes te gebruiken voor functies.quote:Op dinsdag 11 maart 2008 00:29 schreef saban het volgende:
Waarom doe je geen include 'file.php' maar ('file.php') ?
Heb je geen andere smtp host die je kan gebruiken? Misschien eentje van je hoster? Je gebruikt nu waarschijnlijk localhost en die staat blijkbaar ingesteld dat die geen mail voor jou naar buiten relay't.quote:Op maandag 10 maart 2008 23:43 schreef droomkoningin het volgende:
ik heb een contactformulier, het draait op meerdere websites zonder problemen...
nu heb ik het geplaatst op www.mijndomeinnaam.nl bij een nieuwe hoster en het werkt niet meer zoals het hoort![]()
als ik de ontvanger instel als bijv: info@mijndomeinnaam.nl dan wordt het formulier netjes verstuurd naar dit adres.
maar als ik de ontvanger instel als: info@anderedomeinnaam.nl dan komt de mail niet aan... ik krijg ook geen foutmelding
als ik hetzelfde formulier gebruik op een website bij een andere hoster werkt het prima, dus met het script zelf zal niks mis zijn.
heeft iemand een idee waar dit aan kan liggen? van de helpdesk van de nieuwe hoster ben ik tot nu toe nog niet wijzer geworden helaas
Er zijn meer opties natuurlijk, en veilig combineren kan ook.quote:Op dinsdag 11 maart 2008 08:45 schreef CraZaay het volgende:
[..]
Dan zou ik toch voor de optie van Light gaan ipv deze gevaarlijke methode. Een bezoeker kan zo dus ieder .php bestand includen, zowel op het file system als remote.
1 2 3 4 5 6 7 8 9 | $veilig = array('home', 'personalTwee', 'uniRelatedEen', 'uniRelatedTwee'); $pagina = (!empty($_GET['pagina'])) ? $_GET['pagina'] : 'home'; if(in_array($pagina, $veilig)) { include $pagina.'.php'; } else { include 'home.php'; } ?> |
Daar zeg ik ook niets van, ik zei alleen dat het ene codevoorbeeld wat gewoon include wat een user wil onveilig is en niet op die manier klakkeloos overgenomen moet worden.quote:Op dinsdag 11 maart 2008 09:32 schreef Light het volgende:
[..]
Er zijn meer opties natuurlijk, en veilig combineren kan ook.
Dan moeten users eerst weten wat de namen en paden zijn van de php bestanden, daarbuiten gebruik ik dit zelf ook maar zet ik er eerst een directory voor waarin mijn php bestanden staan, die directory weet de user niet en krijgen ze ook niet te weten en van die directory kunnen ze tevens geen index opvragen.quote:Op dinsdag 11 maart 2008 11:28 schreef CraZaay het volgende:
[..]
Daar zeg ik ook niets van, ik zei alleen dat het ene codevoorbeeld wat gewoon include wat een user wil onveilig is en niet op die manier klakkeloos overgenomen moet worden.
Ook voor dummies is security belangrijk. Security is niet een leuke optie voor geavanceerde programmeurs, maar een vereiste voor alle programmeurs. Op het moment dat je publiekelijk toegankelijke webapplicaties maakt moeten die veilig zijn, net zoals je een veilige auto moet hebben op het moment dat je je op de snelweg begeeft.quote:Op dinsdag 11 maart 2008 12:50 schreef Thomass het volgende:
Overigens denk ik dat degene die dit vroeg een 'dummy' is op het gebied van php etc. en zal het dus écht niet veel uitmaken voor wat betreft security op zijn website
"Security through obscurity" is geen security. Jij zet er wellicht een dir voor, maar je voorbeeld zou prima gebruikt kunnen worden om een bestand op een externe server te includen, etc. Dat wil je liever niet ivm Cross Site Scripting bijvoorbeeld.quote:Op dinsdag 11 maart 2008 12:50 schreef Thomass het volgende:
Dan moeten users eerst weten wat de namen en paden zijn van de php bestanden, daarbuiten gebruik ik dit zelf ook maar zet ik er eerst een directory voor waarin mijn php bestanden staan, die directory weet de user niet en krijgen ze ook niet te weten en van die directory kunnen ze tevens geen index opvragen.
$bericht = stripslashes($row['Inhoud1'])." ".stripslashes($row['Inhoud2'])." ".stripslashes($row['Inhoud3']);quote:Op dinsdag 11 maart 2008 13:55 schreef Tarabass het volgende:
Ik zit met een probleempje. Ik ben bezig met een blog-pagina waar op de 'frontpage' het begin van het blogitem weergegeven wordt (dus bijv. max 100 karakters) en waarbij het hele bericht te lezen is via een link 'Lees verder', die aan het einde van de 100 karakters wordt weergegeven.
Nu heb ik het voor elkaar om dus de gehele tekst te strippen op 100 karakters en na honderd karakters de link 'Lees verder' neer te zetten. Maar daarbij worden dus woorden in het midden afgekapt, wat erg lelijk is.
Hoe kan ik er voor zorgen dat de string afgekapt wordt op de laatste spatie voor de max van 100 karakters en die vervangen woord door drie puntjes, zodat er altijd hele woorden worden weergegeven?
volgens mij kun je hier wel wat mee: http://www.w3schools.com/php/func_string_strrpos.aspquote:Op dinsdag 11 maart 2008 13:55 schreef Tarabass het volgende:
Ik zit met een probleempje. Ik ben bezig met een blog-pagina waar op de 'frontpage' het begin van het blogitem weergegeven wordt (dus bijv. max 100 karakters) en waarbij het hele bericht te lezen is via een link 'Lees verder', die aan het einde van de 100 karakters wordt weergegeven.
Nu heb ik het voor elkaar om dus de gehele tekst te strippen op 100 karakters en na honderd karakters de link 'Lees verder' neer te zetten. Maar daarbij worden dus woorden in het midden afgekapt, wat erg lelijk is.
Hoe kan ik er voor zorgen dat de string afgekapt wordt op de laatste spatie voor de max van 100 karakters en die vervangen woord door drie puntjes, zodat er altijd hele woorden worden weergegeven?
En hoe zorg je ervoor dat die 15 woorden geen 300 karakters bevatten?quote:Op dinsdag 11 maart 2008 14:09 schreef qu63 het volgende:
Zo heb ik het in mijn geval gedaan
eerste 15 woorden dus
Ik tik(te) de berichten zelfquote:Op dinsdag 11 maart 2008 15:06 schreef CraZaay het volgende:
[..]
En hoe zorg je ervoor dat die 15 woorden geen 300 karakters bevatten?
Hoe dan in dit voorbeeld:quote:Op dinsdag 11 maart 2008 13:30 schreef CraZaay het volgende:
[..]
"Security through obscurity" is geen security. Jij zet er wellicht een dir voor, maar je voorbeeld zou prima gebruikt kunnen worden om een bestand op een externe server te includen, etc. Dat wil je liever niet ivm Cross Site Scripting bijvoorbeeld.
Ik kan dan op mijn site wat HTML plempen, zorgen dat een user naar een bepaalde URL gaat waar ik die HTML include op jouw manier, vervolgens het JS cookie uitlezen en met een form posten naar mijn site. En da's slechts één mogelijke toepassing :)
1 2 3 4 5 6 7 8 9 10 | if (isset($_GET['p']) $page = $_GET['p']; else $page = 'home'; $path = 'subpages/'.$page.'.php'; if (file_exists($path)) include $path; else include 'subpages/home.php'; ?> |
Dan komt er zometeen een slimmerik die script.php?p=../../../../andere/map/geheimscript.php opvraagt. Of stel je eens voor dat het script zelf op deze manier wordt geinclude... ik weet eigenlijk niet hoe php hier mee omgaat maar het kan best dat dit je server (tijdelijk) op zijn bek trekt.quote:Op dinsdag 11 maart 2008 15:25 schreef Thomass het volgende:
[..]
Hoe dan in dit voorbeeld:
[ code verwijderd ]
Mja ok, op deze manier doe ik het (ongeveer), sowieso kun je volgens mij geen externe dingen includen en al helemaal niks buiten public_html (of heb ik het fout hier?), en wat er aan php geinclude kan worden kunnen ze ook op de normale manier bij, door het pad in te typen in de url balk enzo.. Maargoed wellicht heb je gelijk (tis alleen zoveel gedoe als je nieuwe paginas maaktquote:Op dinsdag 11 maart 2008 15:56 schreef CraZaay het volgende:
Da's wel ff iets anders dan je eerdere codevoorbeeld heMaar ook hier zou je als je het pad weet met subpages/../../../bla.php in principe nog ver kunnen komen. Vandaar dat het mijn voorkeur zou hebben om gewoon een lijst bij te houden van paginanamen die okay zijn
Bedankt voor je input, maar hier heb ik weinig aan. Bovendien vind ik je code nogal langdradig, en zou je misschien zoiets moeten proberen, en dan met een countertje of whatever als $no == 15 is:quote:Op dinsdag 11 maart 2008 14:09 schreef qu63 het volgende:
[..]
$bericht = stripslashes($row['Inhoud1'])." ".stripslashes($row['Inhoud2'])." ".stripslashes($row['Inhoud3']);
$bericht = strip_tags($bericht);
$excerpt = preg_replace('#^((\w+\W*){0,15}).*?$#s', '\1', $bericht);
echo " <td class=\"ber_\">".$excerpt."... <a href=\"message.php?id=".$row['ID']."\">Lees verder!</a></td>\n";
Zo heb ik het in mijn geval gedaan :)
eerste 15 woorden dus
1 2 3 4 5 6 7 | function count_words($str) { $no = count(explode(" ",$str)); return $no; } ?> |
Ja, daar ga je redelijk de mist inquote:Op dinsdag 11 maart 2008 16:02 schreef Thomass het volgende:
Mja ok, op deze manier doe ik het (ongeveer), sowieso kun je volgens mij geen externe dingen includen en al helemaal niks buiten public_html (of heb ik het fout hier?)
Bedankt voor je input. Ik heb even een snippet gemaakt, als het nog beter of korter kan hoor ik het graag natuurlijk. Ik zal de regel even met jullie delen:quote:Op dinsdag 11 maart 2008 14:26 schreef mcDavid het volgende:
[..]
volgens mij kun je hier wel wat mee: http://www.w3schools.com/php/func_string_strrpos.asp
Als je die vanaf positie 100 laat zoeken naar een spatie, geeft 'ie de positie waar je je bericht af moet kappen.
1 2 3 | echo $bericht = substr($bericht = substr($bericht,0,100),0,substr(strrpos($bericht," "),0)) . "... <a href=''>Lees verder</a>"; ?> |
1 2 3 | $bericht = substr($bericht, 0, strpos($bericht, ' ', 100)-1) . '<a href="#">Lees verder</a>'; ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |