Archief - REQUEST: PHP? scriptje dat steeds random tekening (avatar) laadt

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Chkotey

Legacy Member
Ik ken er niks van, mss zit er hier een goei ziel die mij ff wil helpen :D

Ik ben op zoek naar een scriptje dat er voor zorgt dat er steeds dat er steeds een willekeurige afbeelding uit een bepaalde map wordt geladen.
Dat geeft dan als concreet resultaat voor bv een avatar, dat er telkens een andere willekeurige avatar wordt getoond, telkens de pagina opnieuw geladen wordt. (Dan wel op een forum dat de functie heeft dat je gewoon een link kan posten, wat bv dit forum niet heeft)

concreet voorbeeld: deze Spongebob avatar.
Ik heb mijn avatars al in een mapje gestoken en enkele pogingen gedaan om zoiets te maken, maar ik bak er niks van :doh:

Diegene die mij kan helpen zal beloond worden met mijn eeuwigdurende dankbaarheid :cool:

RpR

Legacy Member
Een goed begin zou al zijn dat uw images dezelfde grootte zouden hebben.

Fraggie

Legacy Member
Je plaatst gewoon functions.php, in een bovenliggende map, dan de map van de images (in dit geval img). De extensies kan je zelf aanpassen. En vanaf je een file in je images map zet wordt ze er auto bij genomen.

funcions.php
PHP:
<?php
function randomAvatar() {
 $search = array('jpg','JPG','gif','GIF');
 $i=0;

 if ($opendir = opendir('img')) {
  while($file = readdir($opendir)) {
   foreach($search as $value) { // Elke waarde doorlopen
    $fileExtension = substr($file,-3); // Extensie er afkappen
    if($value == $fileExtension) {
     $avatars[$i] = $file;
     $i++;
    }
   }
  }
  closedir($opendir);
 }
 return $avatars[array_rand($avatars)];
}
?>

memberlist.php
PHP:
<?php require('functions.php'); //Of include, wat je wil ?>
..
<img src="img/<?php echo randomAvatar(); ?>" width=".." height=".." alt="" />
..


*Mss een kleine tekort in men script, jpeg/JPEG zal hij niet lezen (4 chars voor extensie)..
kan je oplossen met

PHP:
..
$fileExtension = substr($file,-3); // Extensie er afkappen
$fileExtension2 = substr($file,-4); // Grotere extensies
if($value == $fileExtension OR $value == $fileExtension2) {
..
ma kvind dat een domme manier van werken.





*2
Je kan natuurlijk ook met vaste avatars werken en kan je dit doen: (minder belastend voor serv denkek :unsure: )
functions.php
PHP:
<?php
function randomAvatar() {
 $avatars = array('homer.gif','garfield.jpg');
 return $avatars[array_rand($avatars)];
}
?>

memberlist.php
PHP:
<?php require('functions.php'); //Of include, wat je wil ?>
..
<img src="img/<?php echo randomAvatar(); ?>" width=".." height=".." alt="" />
..

Chkotey

Legacy Member
Merci Fraggy, ik ga da vandenacht of morgen eens uitproberen (ben echt wel noob hoor), kmoet nu gaan werken
alvast bedankt :niceone:

Fraggie

Legacy Member
Welja kzit zo te denken, dat eerste script checkt eigelijk de extensies, maar zolang je die map niet afschermt met een lege index.html (dus met htaccess) is dat eigelijk niet nodig. Het is niet zo dat er een *.doc file in die map img zal staan.

Als je wil, update ik dat nog, tenzij je voor het 2e script gaat.

Chkotey

Legacy Member
:$ ik heb zo een proggy php-designer 2005, moet ik dat daar gewoon in copy/pasten en aanpassen zodat hij die afbeeldingen van mijn map pakt? :$

Fraggie

Legacy Member
Kheb het script niet herschreven, ma wel een een break in gestoken, zodat hij niet onnodig veel werk doet.
Wat doe je:
  1. Je copyt deze nieuwe php code:
    PHP:
    <?php
    function randomAvatar() {
     $search = array('jpg','JPG','gif','GIF');
     $i=0;
    
     if ($opendir = opendir('img')) {
      while($file = readdir($opendir)) {
       foreach($search as $value) { // Elke waarde doorlopen
        $fileExtension = substr($file,-3); // Extensie er afkappen
        if($value == $fileExtension) {
         $avatars[$i] = $file;
         $i++;
         break;
        }
       }
      }
      closedir($opendir);
     }
     return $avatars[array_rand($avatars)];
    }
    ?>
    Open een tekst verwerker (bv kladblok, moet niet speciaal een php proggie zijn) en plakt de code erin. Sla het op ALS (zodat je de extensie kan wijzigen) functions.php.

  2. Open de pagina waarin de radom avatar moet komen (let op, dit moet een php file zijn!) en begin de file met (als het geen php is tenmiste :p, anders weet je wel wat je moet doen)
    <?php require('functions.php'); ?>

    Op de plaats waar de avatar moet komen (dus de <img> tag)
    zet je: <img src="img/<?php echo randomAvatar(); ?>" width=".." height=".." alt="" />

    dit is gewoon een xHTLM valid code, je moet het niet op deze manier doen (dus height, width & alt mag je gerust weg laten, aangezien niet alle avatars even groot zijn).

  3. File saven & uploaden
    fuctions.php zet je gewoon in je main dir, dus niet in de map waar je images staan. Noemt je map met images ook anders dan img, verander het dan in de php code.

Duidelijk?

TheCrow7

Legacy Member
Leg eerst eens uit hoe je die dingen test.

EDIT: Ja, het is tegen u, Chkotey.

Smoerf

Legacy Member
hm, je probeert dit toch niet op je telenet webspace? Want je images staan blijkbaar op je pandora webruimte...

Chkotey

Legacy Member
TheCrow7 zei:
Leg eerst eens uit hoe je die dingen test.

EDIT: Ja, het is tegen u, Chkotey.
wel in de editor ben ik zo ver dat bij het voorbeeld dat hij geeft, hij dat wit vierkantje met rood kruis laat zien (de afbeeldingen staan nochtans ook op mijn harde schijf in de bijhorende map)
als ik dat ding online zet gaat het helemaal niet meer :(

Fraggie

Legacy Member
Als je het inderdaad op je pandora space probeer zal het niet gaan. Kheb het dan maar in JS geschreven.

Tussen de head tags zet je dit:
PHP:
<script type="text/javascript" language="javascript">
<!--
function randomAvatar(){
 avatars=new Array('homer.jpg','garfield.gif');
  rand=avatars[Math.round(Math.random()*(avatars.length-1))]; // -1 want Array begint met 0
  document.images.randomAvatar.src="img/" + rand;
 }
//-->
</script>

De body tag zal er +- zo uitzien:
<body onload="javascript:randomAvatar();">

Img:
<img src="img/bestaandeimg.gif" id="randomAvatar" width=".." height=".." alt="" />

Maar wel dat er standaard een werkende img in je src staat. Zodat de mensen die geen JS hebben, of gewoon gedisabled hebben, nogaltijd een avatar zien.

Chkotey

Legacy Member
Ik ga dat straks eens proberen, nu ff geen tijd meer
Fraggy, als dat hier lukt krijg je 2X mijn eeuwig durende dankbaarheid :bow:

Chkotey

Legacy Member
damn, dat werkt dus perfect op de site, maar als ik op dat forum de functie 'gebruik avatar van een ander forum met volgende link' aangeef, leest die niks :(

wss omdat op die link een image van ergens anders getoond wordt (dat geven de eigenschappen toch weer), ipv dat hij een image laadt van ergens anders.

Fraggie

Legacy Member
Ik zie net een snelheids foutje in mijn HTML
op het einde van deze regel: <img src="img/bestaandeimg.gif" id="randomAvatar" width=".." height=".." alt="" /">

staat een " te veel, dus het moet dit worden:
<img src="img/bestaandeimg.gif" id="randomAvatar" width=".." height=".." alt="" />


Verder, als je nu kladblok opent, die html code er in plakt (zoals ze nu op de site staat, maar zonder die laatste " :p), en op slaat als een *.jpg file. Dacht ik dat je ook html kon uitvoeren. Ik vermoed trouwens ook dat het forum alleen maar naar de extensie kijkt. :unsure:

Je kan het eens proberen.

Fraggie

Legacy Member
Ik ga het nu niet meer uitzoeken, te laat, maar normaal kon je toch iets van scripts in een img steken? (lang geleden toch: http://www.waxy.org/archive/2003/03/27/open_cdr.shtml)
Probeer anders als laatste nog es die JS alleen (dus alles tussen <script></script>) in je jpg te zetten & als laatste regel, voor de //--> zet je mss (dno of het verschil maakt)

document.write('<img src="randomAvatar();">')

Als dat niet gaat, geef ik het op :p.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan