login  Naam:   Wachtwoord: 
Registreer je!
 Forum

pagina-systeem. (Opgelost)

Offline UpLink - 09/02/2014 21:52 (laatste wijziging 09/02/2014 22:48)
Avatar van UpLink... Beste siMa's,

De titel is een beetje onduidelijk, maar dat zal veranderen bij de uitleg (hoop ik). Ik wist niet goed hoe ik dat zo kort moest formuleren.

Soit, ik heb dus een klein probleempje.

Ik gebruik een "paginasysteempje" (niet exact wat een ander zou gebruiken, maar het doet zijn werk) en dat begint zo naderhand een beetje tegen te werken.

Dit is het befaamde stukje code:

  1. <?php
  2.  
  3. require('tpl/head.tpl');
  4. require('tpl/menu.tpl');
  5.  
  6. $paginas = array('home', 'diensten', 'fotos', 'over-ons', 'contact');
  7.  
  8. $_GET['pagina'] = isset($_GET['pagina']) ? $_GET['pagina'] : 'home';
  9. if(in_array($_GET['pagina'], $paginas))
  10. {
  11. if(file_exists($_GET['pagina'] . '.php'))
  12. {
  13. include $_GET['pagina'] . '.php';
  14. } else
  15. {
  16. include '404.php';
  17. }
  18. } else
  19. {
  20. include '404.php';
  21. }
  22.  
  23. require('tpl/sidebar.tpl');
  24. require('tpl/footer.tpl');
  25.  
  26. ?>


Het probleem dat ik nu heb is dat ik dus weinig kan doen buiten dat systeem om omdat het de toegelaten pagina's uit een array haalt.
Ik was bezig met een fotoalbum (een kleintje) dat verschillende albums moet ondersteunen. dan krijg je het volgende in de url:

  1. ?actie=1&dir=fotos


En dat laat mijn "paginasysteem" niet toe, want dan kom ik terug mooi op mijn home-pagina uit (zoals ik al zei: het doet wat het zou moeten doen).

Nu is dus mijn vraag:

Hoe pas ik mijn paginasysteem zodanig aan dat ook zulke dingen niet uitgesloten worden? Ik wil niet met een iframe ofzo gaan werken want dat gooit het nut van dat paginasysteem een beetje door het venster.

Alvast bedankt.

//EDIT: typo's

9 antwoorden

Gesponsorde links
Offline vinTage - 09/02/2014 22:59
Avatar van vinTage Nieuw lid Je kunt toch gewoon ?pagina=fotoalbum&actie=1&dir=blaat gebruiken?
En dan in je fotoalbum.php niet linken naar ?actie=1&etc, maar naar ?pagina=fotoalbum&zooi

Dat scriptje wat je gebruikt lijkt mij niets mis mee
Offline Thomas - 09/02/2014 23:11
Avatar van Thomas Moderator Ik zou het resultaat van de controle niet opnieuw toekennen aan $_GET['pagina'] maar aan een variabele $pagina (enkelvoud). Dit om onderscheid te maken tussen variabelen die mogelijk rotzooi bevatten ($_GET) en "schone" variabelen ($pagina, $paginas etc.) die je zelf definieert en dus volledige controle hebt over de waarde(n) van zo'n variabele.

En zoals vinTage zegt is je script prima zo uit te breiden.
$_GET['pagina'] is "gereserveerd" voor het PHP-bestand, andere $_GET variabelen zijn vrij te gebruiken om het specifieke PHP-script verder aan te sturen.

Misschien wil je de acties die je binnen zo'n PHP-bestand kunt aanroepen ook met een uniforme $_GET variabele aanroepen, bijvoorbeeld via $_GET['actie'], die mogelijk ook een default waarde heeft als je deze niet expliciet in je URL vermeldt. Dit kun je dan weer gebruiken om hier andere truuks mee uit te halen (clean URLs enzo).

Dit is ook min of meer wat ik aan het doen ben in het frameworkje wat ik aan het bouwen ben.
Offline UpLink - 09/02/2014 23:21
Avatar van UpLink ... Wat doe ik dan verkeerd met dit script?

Ik begrijp niet goed wat ik dan exact moet aanpassen... ?

Plaatscode: 142312
Offline vinTage - 09/02/2014 23:25
Avatar van vinTage Nieuw lid Je hebt nergens het pad aangepast naar ?pagina=fotoalbum&rest...
Bedankt door: UpLink
Offline UpLink - 09/02/2014 23:32
Avatar van UpLink ... vinTage...

Ik ga door de grond op dit moment  
Offline vinTage - 09/02/2014 23:38 (laatste wijziging 09/02/2014 23:58)
Avatar van vinTage Nieuw lid ok, ik ga je script even downloaden en aanpassen, ik post het straks wel terug (ik ga niet testen, dat mag ji zelf doen, ik ga het gewoon even op gevoel aanpassen (en wat dingen logischer maken)

edit: je scriptje wat aangepaste en getest en het werkt niet, waarom weet ik nog niet, maar je orginele scriptje blijkt ook niet te werken 

opslaan als fotoalbum.php en toestaan in je array met 'allowed'.

  1. <?php
  2. // change
  3. $map = 'fotos';
  4. $col = 4;
  5. $row = 5;
  6. $img = array('jpg,png');
  7. $tab = array();
  8. $actie = isset($_GET['actie']) ? $_GET['actie'] : '';
  9. $dir = isset($_GET['dir']) ? $_GET['dir'] : '';
  10. $p = isset($_GET['p']) ? $_GET['p'] : 1;
  11.  
  12. function img_resize($a, $b = '', $c = ''){
  13. if(file_exists($a)){
  14. if($b == '' || !is_numeric($b)){
  15. $b = 100;
  16. }
  17. if($c == '' || !is_numeric($c)){
  18. $c = 100;
  19. }
  20. $f = getimagesize($a);
  21. $g = array();
  22. if($f[1] > $c || $f[0] > $b){
  23. if($f[0] > $c){
  24. $d = $f[0] - $b;
  25. $e = $d / $f[0];
  26. $g[0] = $b;
  27. $g[1] = $f[1] - ($f[1] * $e);
  28. }
  29. elseif($f[1] > $c){
  30. $d = $f[1] - $c;
  31. $e = $d / $f[1];
  32. $g[0] = $f[0] - ($f[0] * $e);
  33. $g[1] = $c;
  34. }
  35. else{
  36. $g[1] = $c;
  37. $g[0] = $b;
  38. }
  39. }
  40. else{
  41. $g[0] = $f[0];
  42. $g[2] = $f[1];
  43. }
  44. return 'src="'.$a.'" width="'.$g[0].'" height="'.$g[1].'"';
  45. }
  46. else{
  47. return false;
  48. }
  49. }
  50. function dir_array($a, $b){
  51. $g = array();
  52. if($c = opendir($a)){
  53. while(false !== ($d = readdir($c))){
  54. if($d != "." && $d != ".."){
  55. $e = explode('.', $d);
  56. $f = $e[count($e)-1];
  57. if(is_dir($a."/".$d)){
  58. $g = array_merge($g, dir_array($a."/".$d, $b));
  59. }
  60. elseif(in_array(strtolower($f), $b)){
  61. $g[] = $a."/".$d;
  62. }
  63. }
  64. }
  65. closedir($c);
  66. }
  67. return $g;
  68. }
  69. function map_array($a){
  70. $g = array();
  71. if($c = opendir($a)){
  72. while(false !== ($d = readdir($c))){
  73. if($d != "." && $d != ".."){
  74. if(is_dir($a."/".$d)){
  75. $g[$d] = $a."/".$d;
  76. }
  77. }
  78. }
  79. closedir($c);
  80. }
  81. return $g;
  82. }
  83. function sort_table($a, $b, $e){
  84. global $p;
  85. global $actie;
  86. global $dir;
  87. $f = $b*$e;
  88. $f = count($a)/$f;
  89. $f = ceil($f);
  90. if(isset($_GET['actie'])){
  91. $actie = '&actie='.$_GET['actie'];
  92. }
  93. else{
  94. $actie = '';
  95. }
  96. if($_GET['dir'] != ''){
  97. $actie .= '&dir='.$_GET['dir'];
  98. }
  99. if($b > count($a)){
  100. $b = count($a);
  101. }
  102. if($p < 1 || $p > $f){
  103. $p = 1;
  104. }
  105. $c = '<table border="1" width="'.(150*$b).'" style="border-collapse: collapse">';
  106. $d = 1;
  107. for($i = $b*$e*($p-1); $i < ($b*$e*$p); $i++){
  108. if($d == 1){
  109. $c .= '<tr align="center" valign="middle">';
  110. }
  111. $c .= '<td width="150" height="150">';
  112. if(isset($a[$i])){
  113. $c .= $a[$i];
  114. }
  115. // else{
  116. // $c .= '&nbsp;';
  117. // }
  118. $c .= '</td>';
  119. if($d == $b){
  120. $d = 1;
  121. $c .= '</tr>';
  122. }
  123. else{
  124. $d++;
  125. }
  126. }
  127. $c .= '<tr align="center" valign="middle"><td colspan="'.$b.'">';
  128. if($p > 1){
  129. $c .= '<a href="?pagina=fotoalbum&amp;p='.($p-1).$actie.'">< Vorige</a>';
  130. }
  131. else{
  132. $c .= '< Vorige';
  133. }
  134. $c .= ' | ';
  135. for($j = 1; $j <= $f; $j++){
  136. if($p != $j){
  137. $c .= '<a href="?pagina=fotoalbum&amp;p='.$j.$actie.'">'.$j.'</a>';
  138. }
  139. else{
  140. $c .= '<b>'.$j.'</b>';
  141. }
  142. $c .= ' | ';
  143. }
  144. if($p < $f){
  145. $c .= '<a href="?pagina=fotoalbum&amp;p='.($p+1).$actie.'">Volgende ></a>';
  146. }
  147. else{
  148. $c .= 'Volgende >';
  149. }
  150. if($_GET['actie'] == 2){
  151. $c .= '<br /><a href="?pagina=fotoalbum&amp;actie=1&amp;dir='.$dir.'">Overzicht</a>';
  152. }
  153. elseif($_GET['actie'] == 1){
  154. $c .= '<br /><a href="?pagina=fotoalbum&amp;dir=">Overzicht</a>';
  155. }
  156. $c .= '</td></tr>';
  157. $c .= '</table>';
  158. return $c;
  159. }
  160. ?>
  161.  
  162. <?php
  163. $i = 1;
  164. foreach(dir_array($dir, $img) as $a){
  165. if(file_exists($a) == true){
  166. if($_GET['actie'] == 1){
  167. $tab[] = '<a href="?pagina=fotoalbum&amp;p='.$i.'&actie=2&dir='.$_GET['dir'].'"><img '.img_resize($a).' border="0" /></a>';
  168. }
  169. else{
  170. $tab[] = '<a href="'.$a.'"><img '.img_resize($a, 700, 700).' border="0" /></a>';
  171. }
  172. $i++;
  173. }
  174. }
  175. if(empty($actie) || empty($dir) || !is_dir($dir)){
  176. echo '<b>Fotoalbums:</b><br />';
  177. if(count(map_array($map)) != 0){
  178. foreach(map_array($map) as $a => $b){
  179. echo '- <a href="?pagina=fotoalbum&amp;actie=1&dir='.$b.'">'.$a.'</a><br />';
  180. }
  181. }
  182. else{
  183. echo '- <a href="?pagina=fotoalbum&amp;actie=1&dir='.$map.'">'.$map.'</a><br />';
  184. }
  185. echo '<a href="?pagina=fotoalbum&amp;actie=1&dir='.$map.'"></a><br />';
  186. }
  187. elseif($actie == 1){
  188. echo sort_table($tab, $col, $row);
  189. }
  190. elseif($actie == 2){
  191. echo sort_table($tab, 1, 1);
  192. }
  193. ?>

edit2: of klopt het dat er nog geen fotos getoond moeten worden, alleen de mappen?
Offline UpLink - 10/02/2014 00:25
Avatar van UpLink ... normaal zou die foto's moeten tonen... maar bij mij doet die het dus ook niet... Ik moet ergens een foutje gemaakt hebben...
Offline vinTage - 10/02/2014 00:32 (laatste wijziging 10/02/2014 00:38)
Avatar van vinTage Nieuw lid jep, gevonden...zo moet het.. $img = array('jpg','png');
aangepaste versie:
  1. <?php
  2. // change
  3. $map = 'fotos';
  4. $col = 4;
  5. $row = 5;
  6. $img = array('jpg','png');
  7. $tab = array();
  8. $actie = isset($_GET['actie']) ? $_GET['actie'] : '';
  9. $dir = isset($_GET['dir']) ? $_GET['dir'] : '';
  10. $p = isset($_GET['p']) ? $_GET['p'] : 1;
  11.  
  12. function img_resize($a, $b = '', $c = ''){
  13. if(file_exists($a)){
  14. if($b == '' || !is_numeric($b)){
  15. $b = 100;
  16. }
  17. if($c == '' || !is_numeric($c)){
  18. $c = 100;
  19. }
  20. $f = getimagesize($a);
  21. $g = array();
  22. if($f[1] > $c || $f[0] > $b){
  23. if($f[0] > $c){
  24. $d = $f[0] - $b;
  25. $e = $d / $f[0];
  26. $g[0] = $b;
  27. $g[1] = $f[1] - ($f[1] * $e);
  28. }
  29. elseif($f[1] > $c){
  30. $d = $f[1] - $c;
  31. $e = $d / $f[1];
  32. $g[0] = $f[0] - ($f[0] * $e);
  33. $g[1] = $c;
  34. }
  35. else{
  36. $g[1] = $c;
  37. $g[0] = $b;
  38. }
  39. }
  40. else{
  41. $g[0] = $f[0];
  42. $g[2] = $f[1];
  43. }
  44. return 'src="'.$a.'" width="'.$g[0].'" height="'.$g[1].'"';
  45. }
  46. else{
  47. return false;
  48. }
  49. }
  50. function dir_array($a, $b){
  51. $g = array();
  52. if($c = opendir($a)){
  53. while(false !== ($d = readdir($c))){
  54. if($d != "." && $d != ".."){
  55. $e = explode('.', $d);
  56. $f = $e[count($e)-1];
  57. if(is_dir($a."/".$d)){
  58. $g = array_merge($g, dir_array($a."/".$d, $b));
  59. }
  60. elseif(in_array(strtolower($f), $b)){
  61. $g[] = $a."/".$d;
  62. }
  63. }
  64. }
  65. closedir($c);
  66. }
  67. return $g;
  68. }
  69. function map_array($a){
  70. $g = array();
  71. if($c = opendir($a)){
  72. while(false !== ($d = readdir($c))){
  73. if($d != "." && $d != ".."){
  74. if(is_dir($a."/".$d)){
  75. $g[$d] = $a."/".$d;
  76. }
  77. }
  78. }
  79. closedir($c);
  80. }
  81. return $g;
  82. }
  83. function sort_table($a, $b, $e){
  84. global $p;
  85. global $actie;
  86. global $dir;
  87. $f = $b*$e;
  88. $f = count($a)/$f;
  89. $f = ceil($f);
  90. if(isset($_GET['actie'])){
  91. $actie = '&actie='.$_GET['actie'];
  92. }
  93. if($dir != ''){
  94. $actie .= '&dir='.$dir;
  95. }
  96. if($b > count($a)){
  97. $b = count($a);
  98. }
  99. if($p < 1 || $p > $f){
  100. $p = 1;
  101. }
  102. $c = '<table border="1" width="'.(150*$b).'" style="border-collapse: collapse">';
  103. $d = 1;
  104. for($i = $b*$e*($p-1); $i < ($b*$e*$p); $i++){
  105. if($d == 1){
  106. $c .= '<tr align="center" valign="middle">';
  107. }
  108. $c .= '<td width="150" height="150">';
  109. if(isset($a[$i])){
  110. $c .= $a[$i];
  111. }
  112. // else{
  113. // $c .= '&nbsp;';
  114. // }
  115. $c .= '</td>';
  116. if($d == $b){
  117. $d = 1;
  118. $c .= '</tr>';
  119. }
  120. else{
  121. $d++;
  122. }
  123. }
  124. $c .= '<tr align="center" valign="middle"><td colspan="'.$b.'">';
  125. if($p > 1){
  126. $c .= '<a href="?pagina=fotoalbum&amp;p='.($p-1).$actie.'">< Vorige</a>';
  127. }
  128. else{
  129. $c .= '< Vorige';
  130. }
  131. $c .= ' | ';
  132. for($j = 1; $j <= $f; $j++){
  133. if($p != $j){
  134. $c .= '<a href="?pagina=fotoalbum&amp;p='.$j.$actie.'">'.$j.'</a>';
  135. }
  136. else{
  137. $c .= '<b>'.$j.'</b>';
  138. }
  139. $c .= ' | ';
  140. }
  141. if($p < $f){
  142. $c .= '<a href="?pagina=fotoalbum&amp;p='.($p+1).$actie.'">Volgende ></a>';
  143. }
  144. else{
  145. $c .= 'Volgende >';
  146. }
  147. if($_GET['actie'] == 2){
  148. $c .= '<br /><a href="?pagina=fotoalbum&amp;actie=1&amp;dir='.$dir.'">Overzicht</a>';
  149. }
  150. elseif($_GET['actie'] == 1){
  151. $c .= '<br /><a href="?pagina=fotoalbum">Overzicht</a>';
  152. }
  153. $c .= '</td></tr>';
  154. $c .= '</table>';
  155. return $c;
  156. }
  157. ?>
  158.  
  159. <?php
  160. $i = 1;
  161. foreach(dir_array($dir, $img) as $a){
  162. if(file_exists($a) == true){
  163. if($actie == 1){
  164. $tab[] = '<a href="?pagina=fotoalbum&amp;p='.$i.'&actie=2&dir='.$dir.'"><img '.img_resize($a).' border="0" alt="foto" /></a>';
  165. }
  166. else{
  167. $tab[] = '<a href="'.$a.'"><img '.img_resize($a, 700, 700).' border="0" alt="foto" /></a>';
  168. }
  169. $i++;
  170. }
  171. }
  172. if(empty($actie) || empty($dir) || !is_dir($dir)){
  173. echo '<b>Fotoalbums:</b><br />';
  174. if(count(map_array($map)) != 0){
  175. foreach(map_array($map) as $a => $b){
  176. echo '- <a href="?pagina=fotoalbum&amp;actie=1&dir='.$b.'">'.$a.'</a><br />';
  177. }
  178. }
  179. else{
  180. echo '- <a href="?pagina=fotoalbum&amp;actie=1&dir='.$map.'">'.$map.'</a><br />';
  181. }
  182. echo '<a href="?pagina=fotoalbum&amp;actie=1&dir='.$map.'"></a><br />';
  183. }
  184. elseif($actie == 1){
  185. echo sort_table($tab, $col, $row);
  186. }
  187. elseif($actie == 2){
  188. echo sort_table($tab, 1, 1);
  189. }
  190.  
  191. ?>


offtopic seo tipje, geef de foto's een fatsoenlijke naam en gebruik die naam als alt tag voor de foto's ipv de 'geen alt tag' versie uit het orgineel 


edit, wat is er mis met de codehighlighter? Er worden verschillende lineheight oid gebruikt (geen zin om uit te zoeken wat de fout is )
Bedankt door: UpLink
Offline UpLink - 10/02/2014 19:07 (laatste wijziging 10/02/2014 19:07)
Avatar van UpLink ... Thanks makker 

nu zie ik tenminste waar het verkeerd liep  
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.291s