• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. PHP + SQL

Forum

  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Jeffrey.Hoekman 29 december 2025 om 17:20
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

Seo url

  • Starohosting
  • 20 april 2014 om 23:17
  • Closed
  • Starohosting
    Professional
    Ontvangen Reacties
    6
    Berichten
    736
    • 20 april 2014 om 23:17
    • #1

    Beste leden,

    Voor whmcs heb ik nu een klein scriptje gemaakt waardoor hij een aantal knowledgebase files (3 laatste uitleest en op de homepagina zet)
    Alleen op de een of andere manier pakt hij de seo vriendelijke urls niet

    De link moet zijn: https://starohosting.nl/knowledgebase/01/test.html
    Hij doet: https://starohosting.nl/01/test.html

    Hierbij het script:

    PHP
    <?php
    
    
    
    
    // Instellingen
    $tkbaTitle     = "KnowledgeBase";
    $seoUrls = true;
    $numArticles   = 3;
    $numCharacters = 150;
    
    
    
    
    // Seo vriendelijke urls
    function seoFriendly ( $title ) {
    
    
    	$seoFriendly = ereg_replace(' ', '-', $title);
    	$seoFriendly = preg_replace('/[^a-zA-Z0-9-]/', '', $seoFriendly);
    	
    	return $seoFriendly;
    
    
    }
    
    
    
    
    $result = mysql_query( "SELECT * FROM tblknowledgebase ORDER BY views DESC LIMIT " . $numArticles );
    
    
    
    
    
    
    while($kbarticle = mysql_fetch_array($result)){
    
    
    
    
       if ( $seoUrls ) {
      $kbUrl = knowledgebase/$kbarticle['id'] . "/" . seoFriendly($kbarticle['title']) . ".html";
     
       }else{
          $kbUrl = "knowledgebase.php?action=displayarticle&amp;id=" . $kbarticle['id'];
       }
    
    
    
    
       $articleSnippet = substr($kbarticle['article'],0,$numCharacters);
    
    
    
    
    
    
    
    
       // Uitvoeren van knowledgebase op website
       $output .= <<<OUT
    
    
    
    
    <div class="news-container">
    <p><span class="news-icon"><b>></b></span>
    <a href="{$kbUrl}"/">{$kbarticle['title']}</a><br />Bekeken: {$kbarticle['views']} keer
    OUT;
    
    
    }
    
    
    
    
    // Uitvoer afsluiten en uitlezen
    $output .= "</p></div>";
    echo $output;
    ?>
    Toon Meer

    Als het niet aan het script ligt waar lig het dan aan? ik gebruik htacces voor seo vriendelijke urls:

    PHP
    # Knowledgebase
    RewriteRule ^knowledgebase/([0-9]+)/[a-z0-9_-]+\.html$ ./knowledgebase.php?action=displayarticle&id=$1 [L,NC]
    RewriteRule ^knowledgebase/([0-9]+)/([^/]*)$ ./knowledgebase.php?action=displaycat&catid=$1 [L,NC]
    RewriteRule ^knowledgebase$ ./knowledgebase.php [L,NC]

    Hopelijk kunnen jullie mij helpen?

    Hosting nodig met hoogwaardige kwaliteit? voor lage prijzen!
    Bekijk onze website: hostingkwaliteit.com

    Heb ik je goed geholpen? geef me dan een drankje via:
    paypal.me

    Bewerkt één keer, laatst door Starohosting (20 april 2014 om 23:52).

  • Guest, wil je besparen op je domeinnamen? (ad)
  • K.Rens
    Eigenaar
    Ontvangen Reacties
    241
    Berichten
    4.472
    Filebase Entries
    2
    • 20 april 2014 om 23:28
    • #2

    Ik denk dat het je gelukt is ondertussen, want als ik https://starohosting.nl/knowledgebase/01/test.html bezoek, krijg ik netjes de pagina te zien?
    De andere link werkt niet.

    Als ik zo je htaccess bestand lees, lijkt deze in orde te zijn.
    Enkel de eerste regel wordt toegepast in dit geval.

    In je php code zie ik wel nergens waar je je "id" in de query zet om enkel dat artikel te lezen.
    Je haalt dus gewoon alle artikels op in dit geval, met een limit erop.
    Ik weet ook niet zeker of 01 in de url standaard werkt, dat het niet gewoon 1 moet zijn.

  • Starohosting
    Professional
    Ontvangen Reacties
    6
    Berichten
    736
    • 20 april 2014 om 23:36
    • #3

    Nee nog niet gelukt..
    Als je naar beneden scroll zie je test staan in de footer (deze wordt uit het bestand in het starttopic uitgelezen en daar geplaatst) en als je dan op de link test klikt verwijs hij niet door naar de juiste link..
    Hoe kan dit?

    Het heeft denk ik met deze rij te maken:

    PHP
    if ( $seoUrls ) {
      $kbUrl = $kbarticle['id'] . "/" . seoFriendly($kbarticle['title']) . ".html";

    Hosting nodig met hoogwaardige kwaliteit? voor lage prijzen!
    Bekijk onze website: hostingkwaliteit.com

    Heb ik je goed geholpen? geef me dan een drankje via:
    paypal.me

  • K.Rens
    Eigenaar
    Ontvangen Reacties
    241
    Berichten
    4.472
    Filebase Entries
    2
    • 20 april 2014 om 23:46
    • #4

    Nu gebruik je andere code dan in je begin topic?
    En beide zijn fout.

    PHP
    $kbUrl = knowledgebase/$kbarticle['id'] . "/" . seoFriendly($kbarticle['title']) . ".html";


    Moet waarschijnlijk zijn:

    PHP
    $kbUrl = "knowledgebase/".$kbarticle['id'] . "/" . seoFriendly($kbarticle['title']) . ".html";

    Maar ik zie in je php code ook nergens een where, waarmee je de id van de url gebruikt om de resultaten te tonen die hij moet tonen.

  • Starohosting
    Professional
    Ontvangen Reacties
    6
    Berichten
    736
    • 20 april 2014 om 23:51
    • #5

    Koen,

    Dat was de oplossing knowledgebase erbij te doen op de goede manier:

    PHP
    $kbUrl = "knowledgebase/".$kbarticle['id'] . "/" . seoFriendly($kbarticle['title']) . ".html";

    Hosting nodig met hoogwaardige kwaliteit? voor lage prijzen!
    Bekijk onze website: hostingkwaliteit.com

    Heb ik je goed geholpen? geef me dan een drankje via:
    paypal.me

  • M.Beers
    Elite members
    Ontvangen Reacties
    31
    Berichten
    460
    • 21 april 2014 om 00:54
    • #6

    Jouw functie is nog niet helemaal waterdicht, om URLS etc. op de juiste manier te verbouwen gebruik ik de volgende code... ik hoop dat je er wat aan hebt :thumbup:

    PHP
    <?php
    /**
     * Filter a valid UTF-8 string so that it contains only words, numbers,
     * dashes, underscores, periods, and spaces - all of which are safe
     * characters to use in file names, URI, XML, JSON, and (X)HTML.
     *
     * @param string $string to clean
     * @param bool $spaces TRUE to allow spaces
     * @return string
     */
    function sanitize($string, $spaces = TRUE)
    {
    	$search = array(
    		'/[^\w\-\. ]+/u',			// Remove non safe characters
    		'/\s\s+/',					// Remove extra whitespace
    		'/\.\.+/', '/--+/', '/__+/'	// Remove duplicate symbols
    	);
    
    
    	$string = preg_replace($search, array(' ', ' ', '.', '-', '_'), $string);
    
    
    	if( ! $spaces)
    	{
    		$string = preg_replace('/--+/', '-', str_replace(' ', '-', $string));
    	}
    
    
    	return trim($string, '-._ ');
    }
    
    
    
    
    /**
     * Create a SEO friendly URL string from a valid UTF-8 string.
     *
     * @param string $string to filter
     * @return string
     */
    function sanitize_url($string)
    {
    	return urlencode(mb_strtolower(sanitize($string, FALSE)));
    }
    
    
    
    
    /**
     * Filter a valid UTF-8 string to be file name safe.
     *
     * @param string $string to filter
     * @return string
     */
    function sanitize_filename($string)
    {
    	return sanitize($string, FALSE);
    }
    ?>
    Toon Meer

    Dit was mijn spreekbeurt, zijn er nog vragen?

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 17 januari 2015 om 16:56
    • #7

    Aangezien het topic nog niet gelocked is, mag ik hier op reageren? ^^

    @M.Beers, maar welke functie gebruik je dan om een URL te bouwen (om deze geschikt te maken om af te drukken)?

    Hopelijk niet sanitize_url()? De omschrijving van deze functie is mij niet helemaal duidelijk? Deze functie is waarschijnlijk bedoeld om je input ($string) geschikt te maken om opgenomen te worden in een URL, bijvoorbeeld als querystring-parameter of -parameter-waarde. Maar dan lijkt het mij vreemd dat je die standaard lowercase maakt, omdat deze mogelijk case-sensitive behandeld wordt.

    Wat je dus hierboven "hebt" zijn een aantal bouwstenen om een URL te maken, maar wat je wellicht nog liever wilt hebben is een soort van link-functie: een eenduidige manier om een URL te bouwen binnen je applicatie.

    Wat Starohosting en K.Rens hierboven doen is in principe niet verkeerd, maar het is toch in zekere zin hardcoding van je interne links. Hier is niets mis mee... totdat je besluit dat je een pagina anders wilt noemen of wilt verplaatsen binnen je website-structuur. Het is veel flexibeler om een (aparte) site-structuur op te zetten en hier aan te refereren via één functie.

    Kijk, het hangt natuurlijk in sterk af van hoe je hele applicatie is gestructureerd maar hoe groter je systeem wordt, hoe meer (potentieel) werk je creëert als je iets wilt wijzigen. Als je een aantal standalone PHP scripts hebt is zo'n generieke oplossing een beetje overkill.

    Maar laten we deze train-of-thought eens verder verkennen.

    Dan .htaccess. Wat je hier in feite doet is het maken van een mapping van externe URL naar een interne URL / intern script via RewriteRules. Dit is in zekere zin ook hardcoding. Ik weet niet hoe het bij jullie zit maar ik had vroeger altijd ruzie met RewriteRules. Daarnaast, als dat ding over tijd groeit wordt het een nachtmerrie om te onderhouden en als je een foutje maakt krijg je een Internal Server Error. Dat wil je ook niet op een productie-omgeving.

    Hoe vet zou het zijn om het beheer van deze mappings te verplaatsen naar een structuur binnen je applicatie, geen gekloot meer met RewriteRules en je .htaccess bestand is en blijft klein en overzichtelijk. Vervolgens maak je één link-functie die van deze site-structuur gebruik maakt. Voordeel daarvan is dat je geen interne links meer hardcode en het gevolg hiervan is dat je code herbruikbaar(der) wordt.

    Dan de link-functie zelf. Hoe zou deze er uit moeten zien? En hoe bouw ik vervolgens een URL, en wat zijn de regels voor het opstellen van deze URL? Dit hangt weer sterk samen met je site-structuur.

    Stel je hebt bijvoorbeeld een nieuws-onderdeel, te bereiken via /news. Hier zou je een overzicht kunnen tonen van de meest recente nieuwsitems (via interne links via je link-functie). De nieuws-pagina is een "node" in je sitestrucuur. Aan deze node koppel je een pagina-type "news" die op zijn beurt weer gekoppeld is aan een News class (die dynamisch via een autoloader wordt geladen) die uitgevoerd wordt als je de /news pagina aanroept. Deze (relatieve) URL (news) sla je op als "slug" in je sitestructuur. En wanneer je een pagina binnen deze sitestructuur aanroept dan rijg je de slugs van deze nodes aan elkaar, gescheiden door een forward slash. Het eerste argument van je linkfunctie is dus bijvoorbeeld een sitestructuur-id of een (intern) pad (maar dat is eigenlijk wederom hardcoding). En voor het tweede argument zou je een array van querystring-argumenten kunnen gebruiken.

    Nu kun je in je code een (interne) link-functie aanroepen die een URL construeert op grond van je site-structuur, die je vrij kunt aanpassen. Als je code enkel gebruik maakt van deze link-functie verandert deze mee als je een pagina verplaatst of van naam wijzigt - en hier hoef je verder niets voor te doen!

    Dan resten er nog twee dingen: hoe maak ik de slugs en hoe verzorg ik vervolgens de afhandeling van de aanroep van een link?

    Hierboven wordt al een voorbeeld gegeven van hoe je je slugs kunt "bakken": je stript alles wat niet voldoet aan een bepaald patroon. Een alternatief wat misschien de moeite waard is om te bekijken is een variant die probeert exotische karakters om te zetten naar standaard letters uit het alfabet. Ik heb hiervoor als inspiratie de volgende site gebruikt: The perfect PHP clean url generator.

    En dan nog de routing. Kort door de bocht stuur je alle requests via je .htaccess door naar /index.php die het verzoek verder afhandelt.

    Als je het netjes wilt doen dan kost dit redelijk wat werk, maar dit is, als dit alles achter de rug is, de moeite waard.

    Een ander voordeel van de gebruikmaking van een aparte sitestructuur is dat je hier ook een rechtenbeheer in onder kunt brengen.

    Wat je dan uiteindelijk gebouwd hebt is een website... om websites mee te bouwen :). Of je hebt in ieder geval een goed begin gemaakt.

    Waar je nog wel aan moet denken is het volgende: als je een link afdrukt in een HTML-document moet je deze escapen om deze te ontdoen van enige speciale betekenis binnen deze context (net zoals je binnen de context van een url onderdelen escaped met urlencode()). Hier kun je het beste htmlspecialchars voor gebruiken.

    Een voorbeeld van een aanroep van een linkfunctie die ik gebruik:

    PHP
    <?php
    // eerste parameter is het pad, false wil zeggen: het script zelf
    $action = $this->link(false, array(
        $this->cfg->actionVariable => 'addNodeProcess',
        $this->cfg->redirVariable => true,
    ));
    ?><form action="<?php echo $this->escape($action) ?>" method="post" accept-charset="UTF-8">

    En de output:

    Code
    <form action="http://mijn.website.com/pad/naar/pagina?action=addNodeProcess&amp;redir=1" method="post" accept-charset="UTF-8">

    De linkfunctie zet alles ook om naar absolute URL's, inclusief domein. Daarnaast zijn de namen van de action- en redirect-parameters ook vrij instelbaar via configuratie.

    Om je maar een idee te geven :).

  • Thisguyisgone
    Elite members
    Ontvangen Reacties
    197
    Berichten
    7.880
    • 17 januari 2015 om 17:42
    • #8

    Ik heb een ander systeem. Ik ga deze in een blogbericht verwerken :)

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design