Jump to content

[TUT] Een random signature welke ook werkt op het forum


David22

Recommended Posts

Tutorial



Een random signature welke ook werkt op het forum

Inleiding

Zoals sommigen van jullie misschien wel is opgevallen, heb ik al een tijdje een signature welke veranderd, elke keer als je de pagina ververst. Nu kreeg ik van sommige mensen een vraag hoe je dit moest maken, daarom deze tutorial.

Wat gaan we doen?

Deze tutorial bestaat niet uit verschrikkelijk veel, wat we in principe doen is het uploaden van de afbeeldingen, een script maken waar we random een afbeelding kunnen laten kiezen en daarna ervoor zorgen dat we dit PHP-script kunnen gebruiken in onze signature.

Eisen voor de webhost

Jouw webhost moet twee dingen ondersteunen: PHP en mod_rewrite. PHP ondersteunen de meeste hosts wel, maar bij mod_rewrite is dit helaas niet het geval.

Hoe controleer ik of mijn host mod_rewrite ondersteund?

Vrij simpel. Maak eerst een tekstbestand met de volgende inhoud:

Options +FollowSymLinks
RewriteEngine On

Maak dan een map aan op jouw webserver, en noem deze ModRewriteTest. Zet daar dit tekstdocument in, en noem hem .htaccess. Dit moet je doen via jouw FTP-programma, Windows Explorer geeft een foutmelding. Browse dan naar

http://www.JOUWWEBSITE.nl/ModRewriteTest/

, waarbij je wel kan raden van JOUWWEBSITE.nl is ;). Nu kunnen er twee dingen gebeuren:

Niets: Gefeliciteerd, mod_rewrite werkt!

Internal Server Error (500): Helaas, geen mod_rewrite voor jou. Regel eerst eens een host die deze functie ondersteund! (Dit doen veel gratis hosts helaas niet.)

Andere manier (door Donald F. Duck)

Stap 1: Afbeeldingen uploaden

Upload alle afbeeldingen die je hebt naar een aparte map op jouw webserver, als voorbeeld zullen we de map RandomSignature gebruiken. Zet hierin alle afbeeldingen. Easy as can be ^^

Stap 2: PHP-script maken

Ik zal hieronder het PHP-script plakken wat nodig is om een signature uit de map te kiezen. Ik zal het script niet stap voor stap met jullie maken, maar wel voorzien van commentaar :Y

<?php
$folder = ''; // Bestand staat in dezelfde map
$exts = 'jpg jpeg png gif'; // Toegestane uitgangen
$files = array(); $i = -1; // Variabelen definieren 
if ('' == $folder) $folder = './'; 
$handle = opendir($folder); // Map openen
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // Controleer de extensie
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // Strings controleren
$files[] = $file; // Het is goed
++$i;
}
}
}
closedir($handle); // Map sluiten
mt_srand((double)microtime()*1000000); // Nodig als PHP versie < 4.2
$rand = mt_rand(0, $i); // $i was halverwege eentje hoger gemaakt
header('Location: '.$folder.$files[$rand]); // Uitvoer
?>

LET OP: Dit script is niet gemaakt door mij, maar door Matt Mullenweg. Ik heb het script alleen verzien van (Nederlands) commentaar!

Sla dit bestand op op jouw webhost, in dezelfde map (RandomSignature) als jouw afbeeldingen. Noem dit bestand index.php

Okay, als het goed is krijg je nu een van jouw afbeeldingen te zien als je browsed naar

http://www.JOUWSITE.nl/RandomSignature

Probleem is alleen dat je nu met een .php (index.php) extensie zit. En de [ img ] tags op het forum ondersteunen alleen afbeeldingsextensies (.png, .jpg, .gif, etc). Hoe nu verder?

Stap 3: mod_rewrite

Okay, nu komt het trucje in beeld. We moeten ervoor zorgen dat we het PHP-script in een afbeeldings-URL weten te gieten. We moeten dus eigenlijk het forum weten te foppen, een valse URL aanmaken. En hiervoor hebben wij mod_rewrite. Opnieuw gaan we nu een .htaccess maken, alleen dit keer met een andere inhoud:

RewriteEngine On
RewriteRule ^randomsig.jpg index.php

Wat doet wat?

RewriteEngine On: Zeggen dat we mod_rewrite gaan gebruiken

RewriteRule...: Zeggen dat we een "fopadres" gaan gebruiken

^randomsig.jpg: Het valse adres aanmaken

index.php: Zeggen waarnaar het valse adres moet doorverwijzen

Dus, in feite zeggen we nu dat de inhoud van index.php uitgevoerd moet worden als we randomsig.jpg intypen. Ideaal dus! Zet nu deze .htaccess in de map RandomSignature, en test het maar! Als je nu naar

http://www.JOUWWEBSITE.nl/RandomSignature/randomsig.jpg

browsed, zal je de inhoud van jouw PHP-script uitgevoerd zien!

Nu moeten we alleen nog het PHP-script in jouw signature zetten. Maar, omdat we al een "fopadres" hebben, is dit supermakkelijk!

Stap 4: de signature in de signature zetten

Ik neem aan dat je wel weet hoe de IMG-tags op het forum werken?

[img=http://www.JOUWWEBSITE.nl/RandomSignature/randomsig.jpg]

Een mogelijk eindresultaat (mijn signature):

darkknight.jpg

Er is ook nog een andere manier om het script werkend te krijgen: Klik (Door Ymosky)

Veel succes, en stel gerucht vragen!

David22

Bewerkt: door David22
Link to comment
Delen op andere websites

Er is nog een manier om erachter te komen of mod_rewrite draait:

<?php
phpinfo();
?>

Zoek dan (via Ctrl+F) naar mod_rewrite. Gevonden: je hebt het. Niet gevonden: je hebt het niet.

Bewerkt: door Donald F. Duck
Link to comment
Delen op andere websites

Mooie tutorital!! :tu:

Ik loop alleen tegen een probleempje aan:

mod_rewrite word ondersteund (is eigen host, gecontroleerd bij php-info en via test met .htaccess dus zou volgens mij goed moeten zijn?), Daarna PHP-script, .htaccess en plaatjes geupload.

Tot aan het PHP-script werkt alles prima (kijk maar), maar als ik .htaccess ga gebruiken krijg ik een "404 Not Found" pagina (link ernaartoe)

Daarna even op een andere website/host (betaalde) geprobeerd maar daar hield ik hetzelfde probleem. Weet iemand misschien waar dat aan kan liggen?

Bewerkt: door Ymosky
Link to comment
Delen op andere websites

@Ymosky: Ik gok dat het aan je .htaccess-'script' ligt. Misschien moet je die ff posten..

Ik heb gewoon degene gebruikt die in de beginpost van David staat, deze dus:

RewriteEngine On
RewriteRule ^randomsig.jpg index.php

Bewerkt: door Ymosky
Link to comment
Delen op andere websites

Hm ik ben niet heel erg thuis in urls rewriten, maar volgens mij is er iets mis met dat script..

RewriteEngine On
RewriteRule randomsig.jpg index.php

Volgens mij moet dat het zijn, want ^ geeft aan (in een 'normale' reguliere expressie althans') dat hij aan het begin van in dit geval de url moet beginnen. Ik geef echter geen garantie, het kan ook zijn dat je een internal server error krijgt als je dit runt, of andere rare geintjes krijgt :puh: . Misschien moet er bij rewriterule simpelweg een ^ voor staan, maar dat weet ik niet, en lijkt mij onlogisch. (ik moet me er toch nog eens een keertje in verdiepen denk ik... :{ )

Anders zou ik het niet weten, misschien dat je .htaccess niet als .htaccess wordt gezien (. vergeten of zo), of dat soort standaard dingen, maar anders zou ik het echt niet weten.

Link to comment
Delen op andere websites

Hmm, daarmee werkte het nog steeds niet,

Maar inmiddels heb ik met wat googelen wel een andere oplossing ervoor gevonden.

Je kunt de map waarin de afbeeldingen en het PHP-script staan eenvoudig de naam van een afbeelding geven, dan krijgt die dus de naam "randomsig.jpg". Net getest en werkt volgens mij prima :)

Link to comment
Delen op andere websites

Om maar even het voorbeeld van David22 aan te houden:

Bij stap 1 en 2 werden de afbeeldingen en het PHP-script (index.php) in de map "RandomSignature" geupload. Ik heb nu de naam van die map veranderd in "randomsig.jpg". Zodat de link er zo uit komt te zien:

http://www.JOUWWEBSITE.nl/randomsig.jpg

Ik heb dat op m'n eigen website gedaan door wat afbeeldingen + een index.php te uploaden in de map "randomsig.png" dat komt er als volgt uit:

[img=http://www.ymosky.nl/images/randomsig.png]

randomsig.png

Bewerkt: door Ymosky
Link to comment
Delen op andere websites

Bedankt, weet ik dat ook weer.

@David: misschien is het wel handig om de manier van Ymosky er ook bij te vermelden voor het geval dat de eigenlijke manier niet werkt. Hoeft niet in de beginpost, maar kan ook met een linkje, voor het geval dat er meer mensen komen die er problemen mee hebben, of geen htaccess hebben :) .

Link to comment
Delen op andere websites

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...