Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Adresowanie w galerii
Forum PHP.pl > Forum > PHP
free
Mam skrypt galeria.php
  1. <?php
  2.  
  3. function imgType($name)
  4. {
  5.  if(substr($name, -4, 4) == '.jpg' || substr($name, -4, 4) == 'jpeg')
  6.  {
  7. return "IMAGETYPE_JPEG";
  8.  }
  9.  elseif(substr($name, -4, 4) == '.gif')
  10.  {
  11. return "IMAGETYPE_GIF";
  12.  }
  13.  elseif(substr($name, -4, 4) == '.png')
  14.  {
  15. return "IMAGETYPE_PNG";
  16.  }
  17. }
  18.  
  19. function resizeImage($source, $max_x, $max_y, $save_image, $jpeg_quality = 100)
  20. {
  21.  /*
  22. * source - obrazek jpeg
  23. * max_x - maksymalna szerokosc pomniejszonego obrazka
  24. * max_y - maksymalna dlugosc pomniejszonego obrazka
  25. * save_image - nazwa pliku do ktorego zostanie zapisany nowy obrazek
  26. * jpeg_quality - jakosc powstalego obrazu jpeg - jezeli bedzie inny to argument jest nie wazny (domyslnie 100)
  27. */
  28.  
  29. if(imgType($source) == "IMAGETYPE_JPEG")
  30. {
  31.  $img_src = imagecreatefromjpeg($source);
  32. }
  33. elseif(imgType($source) == "IMAGETYPE_GIF")
  34. {
  35.  $img_src = imagecreatefromgif($source);
  36. }
  37. elseif(imgType($source) == "IMAGETYPE_PNG")
  38. {
  39.  $img_src = imagecreatefrompng($source);
  40. }
  41. else
  42. {
  43.  die('Wrong filetype! Accepted images: JPG/JPEG, GIF, PNG');
  44. }
  45.  
  46.  $image_x = imagesx($img_src);
  47.  $image_y = imagesy($img_src);
  48.  if($image_x > $image_y) // Landscape
  49.  {
  50. $ratio_x = ($image_x > $max_x) ? $max_x/$image_x : 1;
  51. $ratio_y = $ratio_x;
  52. $move = 'y';
  53.  }
  54.  else // Portrait
  55.  {
  56. $ratio_y = ($image_y > $max_y) ? $max_y/$image_y : 1;
  57. $ratio_x = $ratio_y;
  58. $move = 'x';
  59.  }
  60. $new_x = $image_x*$ratio_x;
  61. $new_y = $image_y*$ratio_y;
  62.  
  63. $move_x = ($move == "x") ? ($max_x-$new_x)/: 0;
  64. $move_y = ($move == "y") ? ($max_y-$new_y)/: 0;
  65.  
  66. $new_img = imagecreatetruecolor($max_x, $max_y);
  67. $background = imagecolorallocate($new_img, 255, 255, 255);
  68. imagefill($new_img, 0, 0, $background);
  69. imagecopyresampled($new_img, $img_src, $move_x, $move_y, 0, 0, $new_x, $new_y, $image_x, $image_y);
  70.  
  71. if(imgType($save_image) == "IMAGETYPE_JPEG")
  72. {
  73.  imagejpeg($new_img, $save_image, 100);
  74. }
  75. elseif(imgType($save_image) == "IMAGETYPE_GIF")
  76. {
  77.  imagegif($new_img, $save_image);
  78. }
  79. elseif(imgType($save_image) == "IMAGETYPE_PNG")
  80. {
  81.  imagepng($new_img, $save_image);
  82. }
  83.  
  84.  echo '<img src="'.$save_image.'" border="0">';
  85. }
  86.  
  87. function showFileSize( $size )
  88. {
  89. $sizes = array( 'B', 'kB', 'MB', 'GB', 'TB' );
  90. $pos  = 0;
  91.  
  92. while( $size >= 1024)
  93. {
  94. $size /= 1024;
  95. $pos++;
  96. }
  97.  
  98. return sprintf( '%.02f', $size ) . ' ' . $sizes[ $pos ];
  99. }
  100.  
  101. $dir = './duze/'; // katalog z grafikami
  102. $min = './mini/'; // katalog na miniaturki
  103.  
  104. $minW = 140; // szerokość miniaturki
  105. $minH = 100; // wysokość miniaturki
  106.  
  107. $perLine = 4; // ilość grafik w linii
  108.  
  109. $file = array();
  110.  
  111. if( $dh = opendir( $dir ) )
  112. {
  113.  while( ( $file = readdir( $dh ) ) !== false )
  114.  {
  115. if( !is_dir( $dir . $file ) )
  116. {
  117.  if( !file_exists( $saveFile = $min . 'small_' . $file ) )
  118.  {
  119. resizeImage( $dir . $file, $minW, $minH, $saveFile );
  120.  }
  121.  
  122.  $files[ $file ] = array(
  123.  'time' => filectime( $dir . $file ),
  124.  'size'  => showFileSize( filesize( $dir . $file ) )
  125. );
  126. }
  127.  }
  128.  
  129.  closedir( $dh );
  130. }
  131.  
  132. asort( $files );
  133.  
  134. ?>
  135. <style type="text/css">
  136.  body, td {
  137. font: 12px Verdana;
  138. text-align: center;
  139. vertical-align: top;
  140. white-space: nowrap;
  141.  }
  142.  img {
  143. border: 0px;
  144.  }
  145. </style>
  146. <table>
  147.  <tr>
  148. <?php
  149.  
  150. $num = 0;
  151.  
  152. foreach( $files as $fileName => $fileInfo )
  153. {
  154.  if( ( $num % $perLine ) == 0 and ( $num > 0 ) )
  155.  {
  156.  
  157.  ?>
  158.  </tr>
  159.  <tr style="height: 5px;">
  160.  </tr>
  161.  <tr>
  162.  <?php
  163.  
  164.  }
  165.  
  166.  ?>
  167. <td>
  168.  <i><?= $fileName; ?></i><br/>
  169.  <a target="_BLANK" href="<?= $dir . $fileName; ?>"><img src="<?= $min . 'small_' . $fileName; ?>" alt=""/></a><br/>
  170.  Rozmiar: <b><?= $fileInfo[ 'size' ]; ?></b><br/>
  171.  Dodano: <b><?= date( 'd/m/Y', $fileInfo[ 'time' ] ); ?></b>
  172. </td>  
  173.  <?php
  174.  
  175.  $num++;
  176. }
  177.  
  178. ?>
  179.  </tr>
  180. </table>


Po nacisnieciu wyswietla w oddzielnym oknie obrazki . Adres to strona.pl/duze/obrazek.jpg
Odpowiada za to
  1. <a target="_BLANK" href="<?= $dir . $fileName; ?>">

Jak przerobic owa linijkę bym otrzymał adrsowanie
  1. <?php
  2. index.php?page=obrazek&cat1=duze 
  3. // gdzie obrazek na nazwa od np obrazek.jpg , duze to nazwa katalogu, w ktorym gal
    eria przechowuje duze obrazki, cat1 to moja zmienna, ktorej uzywam na stronie glo
    wnej
  4. ?>


Na stronie index.php uzywam kodu :
  1. <?php
  2. $folPages = ''; // folder , w ktorym trzymasz te strony 
  3. $page = $_GET['page']; 
  4. if (isset($_GET['cat1']))
  5.  $kat=$_GET['cat1'].'/';
  6. else
  7.  $kat='';
  8. if (isset($_GET['cat2']))
  9.  $kat2=$_GET['cat2'].'/';
  10. else
  11.  $kat2='';
  12. if(isset($page)) { 
  13.  $roz = array("php", "html", "php3", "inc", "htm", "txt", "jpg", "dat",); // itp. 
  14.  for($i=0;$i<count($roz);$i++) 
  15.  { 
  16.  $file=$folPages.$kat.$kat2.$page.'.'.$roz[$i];
  17.  if(file_exists($file)) { 
  18.  include($file); 
  19.  break; 
  20.  } else { 
  21. if($i == (count($roz) - 1)) { 
  22. echo 'blad, brak pliku'; 
  23. } } } } else { 
  24.  include($folPages.'start.php'); 
  25. }
  26. ?>
em1X
Szczerze mowiac za duzo tego kodu do analizy i mi (chyba nie tylko) nie bedzie sie chcialo tego obadać.
free
Wiec pokrotce powiem o co chodzi:

Chodzi o 169 linijke w pliku galeria.php, ktora odpowiada za adresowanie.
Potrzebuje ją tak zmienic, by zamiast adresu
strona.pl/katalog_z_obrazkow/obrazek.jpg
otrzymac index.php?page=obrazek&katalog_z_obrazkami,

skrypt generuje adres
strona.pl/katalog_z_obrazkow/obrazek.jpg
natomiast ja musze otrzymac index.php?page=obrazek&katalog_z_obrazkami, dzieki temu obrazek bedzie traktowany jako podstrona mojej witryny i bedzie otwierany z calą stroną.
W mojej pierwszej wypowiedzi w poscie dodalem kod skryptu generujacego cala witryne - odpowiedzialny za adresowanie index.php?page=coś&coś. Chce przystosowac ten skrypt galerii do tego adresowania.
matrach
To o co ci chodzi nazywa sie mod_rewrite
Oficjalna dokumentacja apache- mod_rewrite + poszukaj na forum.
Lub przeczytaj poniższy text i w wypadku gdy nie będzie działało poszukaj:

W folerze w którym znajduje sie plik index.php dajesz plik .htaccess,
o treści
Kod
RewriteEngine On
RewriteRule ^([a-zA-Z0-9_\.\-]+)/([a-zA-Z0-9_\.\-]+) index.php?katalog=$1&page=$2

Wtedy wywołanie adresu strona.pl/jakis_katalog/obrazek.gif będzie przekierowane na strona.pl/index.php?katalog=jakis_katalog&page=obrazek.gif
free
Nie chce ingerowac w plik plik .htaccess.
Prosze jeszcze raz zwrocic uwage na linijke 169 skryptu galerii:
  1.  <a target="_BLANK" href="<?= $dir . $fileName; ?>"><img src="<?= $min . 'small_' . $fileName; ?>" alt=""/></a>


Widac, ze $dir oraz $fileName odowiadaja za efekt koncowy adresu.
I zastanawiam sie to zmodyfikowac by uzyskac index.php?page=obrazek&katalog questionmark.gif?

Probuje na rozne spaosoby np
  1. href="<? index.php?page=$fileName . & . $dir . ; ?>">
by w efekcie otrzymac adres index.php?page=obrazek&katalog , jednak to cos stworzone przeze mnie jest niepoprawne, ale odzwierciedla moj sposob na rozwiazanie.
Podejrzewam, że trzeba inaczej zapisac znaczek & w powyzszym adresowaniu
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.