Autor Zpráva
Mikeses
Profil
Potřeboval bych, když je stranká napr http://localhost/index.php?menu=profil&id=1 aby se includoval profil.php

Měl jsem :
<?php
$menu = $_GET["menu"];
if ($id != "") {include "./profil.php";}


Ale hazí mi to warningy... Neznáte nějaký next způsob ?
Beavis
Profil
Mikeses:
Bylo by dobré uvést chybovou hlášku.
AM_
Profil
- kde bereš proměnnou $id
- ta proměnná menu je tam trochu nanic :) vždyť jí vůbec nepoužíváš
<?php
if (isset($_GET['menu'])) {
  $menu = preg_replace('/[^a-z]/i', '', $_GET["menu"]); //kvuli bezpecnosti
  include "./$menu.php";
}
?>
Mikeses
Profil
AM:
kde bereš proměnnou $id
- ta proměnná menu je tam trochu nanic :) vždyť jí vůbec nepoužíváš

<?php
$menu = $_GET["menu"];
$menu = preg_replace('/[^a-z]/i', '', $_GET["menu"]);
if ($menu == "portal") {include "./inc/obsahportal.inc";}
elseif ($menu == "register") {include "./inc/obsahregister.inc";}
elseif ($menu == "register2") {include "./inc/obsahregister2.inc";}
elseif ($menu == "register3") {include "./inc/obsahregister3.inc";}
elseif ($menu == "fail") {include "./inc/fail.inc";}
elseif ($menu == "members") {include "./inc/members.inc";}
elseif ($id != "") {include "./inc/profil.inc";}
elseif ($menu == "online") {include "./inc/online.inc";}
elseif ($menu == "edit") {include "./inc/edit.inc";}
elseif ($menu == "pwedit") {include "./inc/pwedit.inc";}
elseif ($menu == "changepw") {include "./inc/changepw.inc";}
elseif ($menu == "chat") {include "./inc/chat.inc";}
elseif ($menu == "finishedit") {include "./inc/finishedit.inc";}
elseif (isset($_GET['menu'])) { include "./$menu.php"; }
else {include "./inc/obsahportal.inc";}
?>
Alphard
Profil
Mikeses:
Má tam ten preg_replace() vůbec smysl?

$menu = isset($_GET["menu"]) ? $_GET["menu"] : "portal";
switch ($menu)
{
  case "portal":   include "./inc/obsahportal.inc";   break;
  case "register": include "./inc/obsahregister.inc"; break;
  // ...
}
Mikeses
Profil
ae ja nepotrebuju co nejvyhodnejsi zousib includovani potrebuji kdyz je stranka např.
menu=profil&id=16554 aby se includoval profil.php
AM_
Profil
Mikeses:
to můj skript dělá, a nejen, vše includuje automaticky podle menu=, ty tvoje tisíce řádek můžeš zahodit :) v tvém skriptu je ten replace pochopitelně k ničemu
Mikeses
Profil
ja nevim jak to tvoje mam pouzit ja to jaksi nechapu
AM_
Profil
<?php
if (isset($_GET['menu'])) {
  $menu = preg_replace('/[^a-z]/i', '', $_GET["menu"]); //kvuli bezpecnosti, odstraneni specialnich znaku z promenne menu
} else {
  $menu = 'default'; //vychozi stranka
}
include "./inc/$menu.php"; //vlozeni souboru s odpovidajicim nazvem z adresare //inc
?>

Co na tom lze nechápat? Tímhle když nahradíš celý ten tvůj kód a příp. si ho upravíš (výchozí stránku třeba), máš vyřešeno.
To ověřování ID je logicky nekonzistentní, stačí vždy jít podle proměnné $menu (když někdo zadá ?menu=chat&id=10, podle tebe to půjde na profil a ne na chat, což je dost divné chování).
Mikeses
Profil
uz to chapu .... ae tedka musim vsechno pojmenovat stejne :D
Alphard
Profil
Mikeses:
ae tedka musim vsechno pojmenovat stejne
Já jsem vám napsal druhou verzi. Rozhodněte se, jestli to budete radši vyjmenovávat, nebo pojmenovávat shodně.
Pokud zvolíte verzi od AM_, skombinoval bych to ještě s file_exists().

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: