Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [php] Losowy baner flash, Mam skrypt, wyswietla mi losowy obrazek
free
post 21.03.2006, 17:12:02
Post #1





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Mam takio skrypt :

  1. <?php
  2.  
  3. $losowy = 'images/kartki';
  4.  
  5. $i = 0;
  6. $imgDir = opendir ($losowy);
  7. while ( $file = readdir( $imgDir ) )
  8. {
  9. //checks that file is an image
  10. $file_type = strrchr( $file, "." );
  11. $is_image = eregi( "jpg|gif",$file_type );
  12.  
  13. if ( $file != '.' && $file != '..' && $is_image )
  14. { $images[$i++] = $file; }
  15. }
  16. closedir ($imgDir);
  17.  
  18. srand( (double) microtime()*1000000 );
  19. $image_name = $losowy . '/' . $images[rand( 0,sizeof( $images ) -)];
  20. $imgSize = GetImageSize( $image_name );
  21.  
  22. //ends script if no images found
  23. if ( $i == 0 )
  24. die();
  25. print ( "<img src=\"" . $image_name . "\"" . $imgSize[3] . " border='0'/>\n");
  26.  
  27. ?>


dziala ok.
Ale obsluguje tylko *gif, *jpg itp.
Chce by pobieral pliki flash *swf
Domyslam sie ze trzeba poprawic linijke :
  1. <?php
  2. print ( "<img src=\"" . $image_name . "\"" . $imgSize[3] . " border='0'/>\n");
  3. ?>
Go to the top of the page
+Quote Post
LBO
post 21.03.2006, 17:48:56
Post #2





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


plikow SWF nie osadzasz (embedujesz) na strone za pomoca znacznika IMG, sluzy ku temu znacznik OBJECT

Ten post edytował LBO 21.03.2006, 17:50:27
Go to the top of the page
+Quote Post
free
post 21.03.2006, 18:07:49
Post #3





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Wiem.
Uzywam na stronie plikow swf, sluzy do tego kod:
Kod
<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0 height=17 width=95><PARAM
NAME=movie VALUE=plik.swf><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE=transparent> <EMBED src=plik.swf menu=false quality=high wmode=transparent bgcolor=#FFFFFF WIDTH=990 HEIGHT=145 TYPE=application/x-shockwave-flash
PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash> </EMBED></OBJECT>


Problem w tym, ze nie wiem jak polaczy oba kody
Go to the top of the page
+Quote Post
pEbE
post 21.03.2006, 18:14:49
Post #4





Grupa: Zarejestrowani
Postów: 106
Pomógł: 3
Dołączył: 21.03.2006
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Wyciagasz typy plikow i dajesz
  1. <?php
  2.  
  3. if($type ='swf') {
  4. echo '<OBJECT>blablablabla.swf</OBJECT>';
  5. }
  6. else {
  7. echo '<img src="obrazek.gif">';
  8. }
  9.  
  10. /*
  11. Jesli masz kilka typow mozesz dac elseif zamiast else
  12. */
  13.  
  14. ?>
Go to the top of the page
+Quote Post
free
post 21.03.2006, 18:49:18
Post #5





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Jak połączyc oba skrypty ?
Go to the top of the page
+Quote Post
Ociu
post 21.03.2006, 19:29:13
Post #6





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




  1. <?php
  2. $Ext = explode('.', $filename);
  3.  
  4. if($Ext[ sizeof( $Ext ) - 1 ] == 'swf') {
  5. print '<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0>
  6. <PARAMNAME=movie VALUE='.$filename.'><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE=transparent> <EMBED src='.$filename.' menu=false quality=high wmode=transparent bgcolor=#FFFFFF WIDTH=990 HEIGHT=145 
    TYPE=application/x-shockwave-flash
  7. PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash> </EMBED></OBJECT>';
  8. } else {
  9. print '<img src="'.$filename.'" />';
  10. }
  11. ?>

Saluto.
Go to the top of the page
+Quote Post
free
post 22.03.2006, 13:50:00
Post #7





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Z tego co widze powyzszy kod nie jest wspomagany moim kodem losowego wyboru objektu Flash.
Moj kod sprobowalem polaczyc z Ociu:
  1. <?php
  2.  
  3. $losowy = 'images/kartki';
  4.  
  5. $i = 0;
  6. $imgDir = opendir ($losowy);
  7. while ( $file = readdir( $imgDir ) )
  8. {
  9. //checks that file is an image
  10. $file_type = strrchr( $file, "." );
  11. $is_image = eregi( "jpg|gif",$file_type );
  12.  
  13. if ( $file != '.' && $file != '..' && $is_image )
  14. { $images[$i++] = $file; }
  15. }
  16. closedir ($imgDir);
  17.  
  18. srand( (double) microtime()*1000000 );
  19. $image_name = $losowy . '/' . $images[rand( 0,sizeof( $images ) -)];
  20. $imgSize = GetImageSize( $image_name );
  21.  
  22. //ends script if no images found
  23. if ( $i == 0 )
  24. die();
  25. print ( "<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0>
  26. <PARAMNAME=movie VALUE='.$filename.'><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE=transparent> <EMBED src='.$filename.' menu=false quality=high wmode=transparent bgcolor=#FFFFFF WIDTH=990 HEIGHT=145 
    TYPE=application/x-shockwave-flash
  27. PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash> </EMBED></OBJECT>\n");
  28.  
  29. ?>
Go to the top of the page
+Quote Post
LBO
post 22.03.2006, 14:33:14
Post #8





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


tak jak podal @Ociu:
  1. <?php
  2.  
  3. $losowy = 'images/kartki';
  4.  
  5. $i = 0;
  6. $imgDir = opendir ($losowy);
  7. while ( $file = readdir( $imgDir ) )
  8. {
  9. //checks that file is an image
  10. $file_type = strrchr( $file, "." );
  11. $is_image = eregi( "jpg|gif|swf",$file_type );//nie znam sie na wyrazeniach regularnych, jezeli jest blad prosze o poprawienie k
    toregos z forumowiczow...
  12.  
  13. if ( $file != '.' && $file != '..' && $is_image )
  14. { $images[$i++] = $file; }
  15. }
  16. closedir ($imgDir);
  17.  
  18. srand( (double) microtime()*1000000 );
  19. $image_name = $losowy . '/' . $images[rand( 0,sizeof( $images ) -)];
  20.  
  21. //ends script if no images found
  22. if ( $i == 0 )
  23. die();
  24. $size = getImageSize($image_name);
  25. $Ext = explode('.', $image_name);
  26. if($Ext[ sizeof( $Ext ) - 1 ] == 'swf') {
  27. print '<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0>
  28. <PARAMNAME=movie VALUE='.$filename.'><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE=transparent> <EMBED src='.$filename.' menu=false quality=high wmode=transparent bgcolor=#FFFFFF width='.$size[0].' height='.$size[1].' TYPE=application/x-shockwave-flash
  29. PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash> </EMBED></OBJECT>';
  30. } else {
  31. print '<img src="'.$filename.'" width="'.$size[0].'" height="'.$size[1].'" />';
  32. }
  33. ?>


edit: i czywiscie dodaj poprawne osadzanie SWF'a
edit2: ogolnie jest daleko od idealu np. rozszerzenie jest sprawdzane conajmniej 2 razy.. zmodyfikowalbym tablice $images - kluczami bylyby nazwy pliku, a wartosciami extensions... ale to juz twoja glowa biggrin.gif

cheers

Ten post edytował LBO 22.03.2006, 14:47:28
Go to the top of the page
+Quote Post
free
post 22.03.2006, 20:47:55
Post #9





Grupa: Zarejestrowani
Postów: 269
Pomógł: 0
Dołączył: 6.02.2006

Ostrzeżenie: (0%)
-----


Powyzszy kod nie dziala!
Po sparsowaniu otrzymujemy:
Kod
<OBJECT classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0>
<PARAMNAME=movie VALUE=><PARAM NAME=menu VALUE=false><PARAM NAME=quality VALUE=high><PARAM NAME=wmode VALUE=transparent> <EMBED src= menu=false quality=high wmode=transparent bgcolor=#FFFFFF width=990 height=140 TYPE=application/x-shockwave-flash
PLUGINSPAGE=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash> </EMBED></OBJECT>


Z kodu
Kod
VALUE=false
domyslilem sie ze cos jest nie tak ze zmienną.
Poprawilem
  1. <?php
  2. $filename
  3. ?>
na
  1. <?php
  2. $image_name
  3. ?>
i śmiga ! :-)

Co masz na mysli mowiac :
Cytat
edit2: ogolnie jest daleko od idealu np. rozszerzenie jest sprawdzane conajmniej 2 razy.. zmodyfikowalbym tablice $images - kluczami bylyby nazwy pliku, a wartosciami extensions.

Jezeli macie chwile czasu to poprawcie ten kod by był idealny snitch.gif .
Ja ze swojej strony zrobilem co moglem poprawilem zmienne w kodzie i skrypcik dziala.
Go to the top of the page
+Quote Post
LBO
post 23.03.2006, 00:45:21
Post #10





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


poprawione :
  1. <?php
  2. $baners_dir = 'images/kartki/';
  3.  
  4. $dir = opendir($baners_dir);
  5. while($file = readdir($dir)) { 
  6. $ext = strrchr($file, ".");
  7. $is_baner = eregi("jpg|gif|swf", $ext);
  8. if($file != '.' && $file != '..' && $is_baner) {
  9. $images[$file] = $ext;
  10. }
  11. }
  12. closedir ($dir);
  13. print_r($images);
  14. $filename = array_rand($images);
  15. $image_path = $baners_dir.$filename;
  16.  
  17. if (empty($images)) {
  18. die('There is no baners available');
  19. }
  20.  
  21. $size = getImageSize($image_path);
  22. if($images[$filename] == '.swf') {
  23. '<!--[if IE]><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
  24.  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
  25.  width="'.$size[0].'" height="'.$size[1].'"><script>/*<![endif]-->
  26.  <object type="application/x-shockwave-flash" data="'.$image_path.'" width="'.$size[0].'" height="'.$size[1].'"><script type="text/javascript">/**/</script>
  27.  <param name="movie" value="'.$image_path.'" />
  28.  <p>Alternative Content</p>
  29.  </object>'
  30. );
  31. } else {
  32. print('<img src="'.$image_path.'" width="'.$size[0].'" height="'.$size[1].'" />');
  33. }
  34. ?>


Ten post edytował LBO 23.03.2006, 00:52:16
Go to the top of the page
+Quote Post
will
post 18.02.2007, 12:03:03
Post #11





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


Kod @LBO zwraca pliki bannerow z podanej sciezki:
Cytat
Array ( [ae1.swf] => .swf [ae2.swf] => .swf [ae3.swf] => .swf [ae4.swf] => .swf )

Wie ktos jak sie tego pozbyc?

Dzieki,
willi
Go to the top of the page
+Quote Post
erix
post 18.02.2007, 12:35:33
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. $filename = array_rand($images);
  3. $image_path = $baners_dir.$filename;
  4. ?>


zamień na:

  1. <?php
  2. $filename = array_rand(array_keys($images));
  3. $image_path = $baners_dir.$filename;
  4. ?>


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
will
post 18.02.2007, 12:49:47
Post #13





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


Pozostalo:
Cytat
Array ( [ae1.swf] => .swf [ae2.swf] => .swf [ae3.swf] => .swf [ae4.swf] => .swf )

Dodatkowo Warning:
Cytat
getimagesize(files/rotate/2): failed to open stream: No such file or directory ... on line 78
Go to the top of the page
+Quote Post
erix
post 18.02.2007, 12:57:25
Post #14





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Hmm, a czy tu jest 78 linijek?

Bo ścieżki do plików (katalog) nijak się nie zgadzają z tym, co podałeś wcześniej.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
will
post 18.02.2007, 13:23:05
Post #15





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


Nie ma 78 linijek, bo podalem ostrzerzenie wyrzucone przez serwer, po wgraniu calego pliku (razem z html).
Cytat(erix @ 18.02.2007, 12:57:25 ) *
Bo ścieżki do plików (katalog) nijak się nie zgadzają z tym, co podałeś wcześniej.

Wlasnie o to chodzi. Po zmianie:
  1. <?php
  2. $filename = array_rand(array_keys($images));
  3. ?>

parser nie znajduje juz pilkow w katalogu files/rotate/ (ae1.swf, ae2.swf, etc.) tylko (jesli dobrze rozumiem) klucze 1,2,3...

PS. Jesli chodzi o PHP to jestem jak miejsce wskazuje przedszkolakiem.
Go to the top of the page
+Quote Post
erix
post 18.02.2007, 13:32:24
Post #16





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
  1. <?php
  2. $losowy = 'images/kartki';
  3. ?>

Tutaj było coś innego + inny numerek linijki, to dlatego pytam.

Czy ty masz zainstalowane GD?
Po walnąłem wszystko do siebie (PHP 5.2.1) i działa jak powinno (nawet bez tej mojej modyfikacji).

Ten post edytował erix 18.02.2007, 13:32:40


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
will
post 18.02.2007, 13:42:06
Post #17





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


Czlowiek sie uczy cale zycie. Co to jest GD?

Folder images/kartki/ byl podany w kodzie @LBO. Ja oczywiscie zmienilem - sam umiesciem flashe w files/rotate/

Problem rozwiazalem przed chwila korzystajac z tego (klik) rozwiazania.

Mimo to dalej nie rozumiem, dlaczego u mnie serwer wywalal ten dziwny blad pokazujac poszczegolne pliki ze sciezki. Mam u siebie PHP 4.4.2.

Pozdr,
willi
Go to the top of the page
+Quote Post
erix
post 18.02.2007, 13:54:34
Post #18





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Rozszerzenie do generowania grafik, ale klikam szybciej niż myślę, bo wywaliło, że plik nie istnieje (a nie tak, jak pomyślałem, że GD nie ma). :X

Nie wpisywało całej ścieżki obrazka do parametru, nie wiem dlaczego...

Odpaliłem też na PHP4 (4.4.4) i efekt był ten sam - pięknie zwróciło wszystko, tak jak powinno...


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
LBO
post 18.02.2007, 14:01:13
Post #19





Grupa: Zarejestrowani
Postów: 1 415
Pomógł: 117
Dołączył: 7.09.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(will @ 18.02.2007, 12:03:03 ) *
Kod @LBO zwraca pliki bannerow z podanej sciezki:

Wie ktos jak sie tego pozbyc?

Dzieki,
willi


Usuń
  1. <?php
  2. print_r($images);
  3. ?>

i po sprawie.

Nie wiem po co te zamiany nazw zmiennych, array_keys()" title="Zobacz w manualu PHP" target="_manual etc.
Go to the top of the page
+Quote Post
will
post 18.02.2007, 14:19:23
Post #20





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 18.02.2007

Ostrzeżenie: (0%)
-----


Rowniez dziala, dzieki!
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 03:09