Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Przekazanie parametru z includowanej strony
Forum PHP.pl > Forum > Przedszkole
Ulysess
dobry wieczór , mam pewien problem z którym nie mogę sobie poradzić..
strona wygląda następująco:

  1. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. ....
  5. </head>
  6. <body>
  7. <div>.......</div>
  8. <div>';
  9.  
  10. @$strona=$_GET['page'];
  11.  
  12. if(file_exists(''.$strona.'.php'))
  13. {
  14. include(''.$strona.'.php');
  15. }
  16. else {include('start.php');}
  17. echo '</div>';


problem polega na tym że chciałbym z wczytywanej podstrony tam gdzie jest div z kropeczkami przekazać nazwę tej zakładki , w jaki sposób można to zrobić o ile się da questionmark.gif ..
kalmaceta
kombinować , poza tym jedna wielka dziura - system plików niezabezpieczony

  1. if(file_exists($_GET['page'].'.php'))
  2. $strona=$_GET['page'];
  3. else $strona='';
  4. echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head>
  7. ....
  8. </head>
  9. <body>
  10. <div>'.$strona.'</div>
  11. <div>';
  12.  
  13. include (($strona)?''.$strona.'.php':'start.php');
  14. echo '</div>';
Ulysess
jak to dziura ? :| jakie niebezpieczeństwo niesie używanie 'mojego' kodu ? :|

nie wiem czy dobrze zrozumiałem ale używając funkcji file_exists powinienem includowane podstrony trzymać w innym katalogu questionmark.gif

a czy takie rozwiązanie jest bezpieczne questionmark.gif

  1. <?php
  2. @$strona = $_GET['page'];
  3. $strona = str_replace('/', '',$strona);
  4. $strona = str_replace('.', '',$strona);
  5. if(file_exists(''.$strona.'.php') && $strona != 'index')
  6. {
  7. include(''.$strona.'.php');
  8. }
  9. else {include('start.php');}
  10. ?>
MateuszS
Sądzę że to co chcesz robić tym skryptem można zrobić inaczej i bezpieczniej...
Hoku
a taka dziura, że ktos ci może podmienic wartość get['page'] na np usun_wszystko.
a ty akurat masz taki plik który akurat to zrobi. tiredsmiley.gif
Ulysess
Mateusz a można jaśniej questionmark.gif

wszystko ładnie w teori ale wolał bym podanie konkretnego przykładu jaki może spowodować 'zadyme' na mojej stronie..

w danym katalogu znajdują się TYLKO i wyłącznie pliki które chce includować + mintajax.js i style.css. dodatkowo na stronie od jakiegoś czasu funkcjonuje już rozwiązanie podstrona.html więc nie widać jak się zwie zmienna get (fakt mógł ktoś zapamiętać)
MateuszS
Dlaczego chcesz includować plik o takiej samej nazwie co zmienna $_GET["page"] ? Napisz dokładnie co chcesz zrobić, jak to ma działać.

Ok, w twoim katalogu znajdują się tylko pliki które chcesz includować ale co jeżeli ktoś poda ?page=../usun_strone.php? Ja bym tej walidacji aż tak nie ufał.
Ulysess
mam stronę która wygląda tak: http://qoooq.pl/stronka.jpg.
Czarnym kolorem zaznaczyłem fragment który jest przeładowywany
zaś w brązowym chciałbym wstawiać nazwę zakładki ale nie nazwę pliku tylko taką jaką mi się podoba..

na stronie mam również regułkę mod_rewrite ->
  1. RewriteRule ^(.+).html$ index.php?page=$1


kod służący do przeładowywania na tą chwile wygląda tak:

  1. <?php
  2. @$strona = $_GET['page'];
  3. $strona = str_replace('/', '',$strona);
  4. $strona = str_replace('.', '',$strona);
  5. if(file_exists(''.$strona.'.php') && $strona != 'index')
  6. {
  7. include(''.$strona.'.php');
  8. }
  9. else {include('start.php');}
  10. ?>


jedyne rozwiązanie na które wpadłem jest użycie nad treścią strony switcha->

  1. switch($_GET['page'])
  2. {
  3. case 'moje_konto':
  4. $nazwa_zakladki = 'Moje Konto';
  5. break;
  6.  
  7. default:
  8. $nazwa_zakladki = 'Wprowadzenie';
  9. break;
  10. }


tylko po 1 przy wejściu na stronę główną wywali notice że page nie istnieje a po 2 co ważniejsze nie wydaje mi się żeby to było dobre i wydajne rozwiązanie..
MateuszS
Aa o to Ci caman... można tu użyć Javascriptu.

  1. <span id="blah"></span> //tutaj masz ten tytuł np Wprowadzenie


tutaj banalna funkcja
[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. function cos(co) {
  3. document.getElementById("blah").innerHTML = co;
  4. }
  5. </script>
[JAVASCRIPT] pobierz, plaintext


i na każdej includowanej podstronie .php/.html dajesz (zmieniasz tylko argument funkcji)

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. cos("Wprowadzenie");
  3. </script>
[JAVASCRIPT] pobierz, plaintext


Nie wiem czy o to Ci caman, pisane z głowy, moze byc jakas literówka, mysle dasz rade poprawic.

O to mniej wiecej chodzilo?
[
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.