Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem změna proměné v php přes odkaz ?

Potřeboval bych poradit se syntaxí PHP.

Tohle bych chtel použít do menu:
<a href="index.php?p=stranajedna">prvni strana</a>

do čeho mam vložit obsah strany jedna aby se mi pak zobrazil v <?php $obsah=""; include "nevim co, asi.php(txt)";?>

Problem je v tom že nevim jak změnit proměnout toho include na jinou, odkazem.

EDIT: v tutorialech sem to nenašel už to hledám dva dny

Předmět Autor Datum
Ehm, trochu nechápu. Pokud by platilo <a href="index.php?p=stranajedna">prvni strana</a> Tak k pr…
host 27.09.2008 18:10
host
Tohle chápu děkuju, jen co budu mít čas vyzkouším a napíšu.
Banshee 27.09.2008 18:47
Banshee
ano to by malo fungovat ale to co pises je IMHO bezpecnostna diera jak hovado. :) (myslim ze pomocou…
MM.. 27.09.2008 18:55
MM..
Co není jasné na této větě? ;-) Samozřejmě je potřeba ošetřit obsah proměnných atd...
host 27.09.2008 19:00
host
Aha jak to teda ošetřit ?
Banshee 27.09.2008 19:03
Banshee
Vždy musíš otestovat, co proměnná obsahuje - jinými slovy jestli obsahuje vůbec něco a pokud ano, ta…
host 27.09.2008 19:12
host
Jaj som si nevsimol :-) Myslis ze toho bude dotazovatel schopny? :)
MM.. 27.09.2008 19:03
MM..
Tak se kdyžtak zeptá. Nechtěl jsem mu zatěžovat hlavu víc než je nutný, tak jsem se snažil odpovědět…
host 27.09.2008 19:07
host
Imho by měla být poslední věta alespon tučně, protože takhle si to koleduje o soubor zz.php.txt, coz…
AZOR 27.09.2008 20:29
AZOR
menu.php: <a href="index.php?strana=jeleniznasilnilimyslivce"> <a href="index.php?strana=necoome">…
marekdrtic 27.09.2008 18:35
marekdrtic
Když napíšu do prohlížeče tohle, co se stane? www.tvojestranka.cz?index.php?strana=http://www.mujwe…
host 27.09.2008 18:43
host
Tak se tam přidá ošetření, že pokud je na začátku http:// nebo www nebo jenom www. , tak se to neote…
marekdrtic 27.09.2008 18:47
marekdrtic
No, to už zní líp... ;-)
host 27.09.2008 19:02
host
Ja by som odtial vyhodil vsetky znaky ktore nemozu byt v nazve suboru ( znaky : / . atd) myslim ze p…
MM.. 27.09.2008 19:05
MM..
Že mám chuť pomáhat, tak takový malý ošetření teda udělám :-) : <?php if(!isset($_GET['strana'])) {…
marekdrtic 27.09.2008 19:47
marekdrtic
Když to má teda taková bezpečnostní rizika, nechci aby někdo uplně jednoduše procházel obsah serveru…
Banshee 27.09.2008 21:09
Banshee
nechci aby někdo uplně jednoduše procházel obsah serveru Nemá to nějaká velká bezpečnostní rizika,…
AZOR 27.09.2008 21:16
AZOR
jo a neodpovedl jsem vubec na tu citaci - s prochazenim serveru to ma spolecne jen malo - tedy utocn…
AZOR 27.09.2008 21:19
AZOR
takze by to stacilo udelat tak jak psal marekdrtic ?
Banshee 27.09.2008 21:43
Banshee
šlo by to napsat takhle ? <a href="index.php?p=hlavni">Hlavní strana</a> <a href="index.php?p=druha…
Banshee 28.09.2008 01:13
Banshee
to je z bezpecnostneho hladiska samozrejme najlepsie co moze byt (akurat to nie je univerzalne - bud…
MM.. 28.09.2008 02:47
MM..
Mě to takhle stačí, menu nebudu měnit často, a přidání pár položek mě nazabije. Děkuju za radu vyzk… poslední
Banshee 28.09.2008 09:39
Banshee

Ehm, trochu nechápu.

Pokud by platilo

<a href="index.php?p=stranajedna">prvni strana</a>

Tak k proměnné stranajedna se dostaneš metodou $_GET

$strana = $_GET['p'];

A pokud obsah stránky budeš mít uložený např. v souboru stranajedna.txt, tak stačí includovat

include ['$strana.".txt"'];

Samozřejmě je potřeba ošetřit obsah proměnných atd...

ano to by malo fungovat ale to co pises je IMHO bezpecnostna diera jak hovado. :) (myslim ze pomocou index.php?p=cokolvek.cokolvek%00 by si si mohol dat vypisat akykolvek subor severa (ale nie som si isty nechce sa mi to testovat), aj v inych nad/adresaroch (pomocou ..\inyadresar\ )

Vždy musíš otestovat, co proměnná obsahuje - jinými slovy jestli obsahuje vůbec něco a pokud ano, tak jestli to je to, co to má být.
Také ověřit, jestli v obsahu proměnné nejsou nějaké nepovolené znaky, jestli není obsah moc dlouhý atp...

Asi není v mých silách tě to tady naučit, od toho jsou jiné stránky. Když budeš mít konkrétní problém nebo otázku, tak se ptej.

http://pandora.idnes.cz/part/2004/2/21141/3/24-PHP- chyby-v-php.DOC
php-kontrola-chyb
kontrola-chyb.php
a tak dále...

menu.php:

<a href="index.php?strana=jeleniznasilnilimyslivce">
<a href="index.php?strana=necoome">

index.php:

<div id="left">
<? include "menu.php"; ?>
</div>
<div id="right">
<?
if(!isset($_GET['strana']))
{
include "hlavnistrana.php";
}
else
{
$strana = $_GET['strana'].".php";
include "$strana";
}
?>
</div>

Jedno z mnoha řešení, jak to naprogramovat

Že mám chuť pomáhat, tak takový malý ošetření teda udělám :-) :

<?php
if(!isset($_GET['strana']))
{
include "hlavnistrana.php";
}
else
{
$soubor = $_GET['strana'].".php";
if(is_file($soubor))
{
if(!similar_text("http", $soubor) != "0")
{
include "hlavnistrana.php";
}
else
{
include $soubor;
}

}
else
{
include "hlavnistrana.php";
}

}
?>

btw pak mi dej odkaz na ten web, nějak to obejdu a pošlu ti tam kouzelnej skriptík s obsahem

unlink("index.php");

:-D:-D:-D

Když to má teda taková bezpečnostní rizika, nechci aby někdo uplně jednoduše procházel obsah serveru.
Myslel sem že by to šlo takhle pěkně udělat, potřeboval bych poradit v tom jak v layoutu stránek udělat menu které by měnilo jen obsah aby se nenačítal layout pořád dokola.

nechci aby někdo uplně jednoduše procházel obsah serveru

Nemá to nějaká velká bezpečnostní rizika, pokud to dobře uděláš, duležité je "nefláknout" do funkce include
proměnnou, kterou nějakým zpusobem nekontroluješ (tedy jestli patri do tech co znas ci jestli NENIz ciziho webu)
protoze v opacnem pripade ti do www.xx.com pripise nekdo neco jako http://www.xx.com?stranka=http://www.jehostranka.co m/osklivy_kod_v_php a to se vlozi do include a interpretuje PHP. a to uz je pruser. Tedy riziko neni udelat to timto zpusobem, riziko je udelat to blbe timto zpusobem. Tedy nedávat do include to co mohl zadat uzivatel a nevis o tom, ze je to neskodlive.. jak se to osetri v tom mas volne ruce.

jo a neodpovedl jsem vubec na tu citaci - s prochazenim serveru to ma spolecne jen malo - tedy utocnik (vyse uvedeny problem) by klidne mohl podstrcit tam svuj script na vypis souboru, jiank prochazeni adreasru je nastaveni apache a pripadne (ne)existence index.htm/html/php/jsp defalut.asp...

šlo by to napsat takhle ?

<a href="index.php?p=hlavni">Hlavní strana</a>
<a href="index.php?p=druha">Druhá strana</a>
<a href="index.php?p=treti">Třetí strana</a>
<a href="index.php?p=ctvrta">Čtvrtá strana</a>
   
<?php                          
if($_GET['p']==hlavni)
{ include ['$p.".txt"']; }

elseif($_GET['p']==druha)
{ include ['$p.".txt"']; }

elseif($_GET['p']==treti)
{ include ['$p.".txt"']; }

elseif($_GET['p']==ctvrta)
{ include ['$p.".txt"']; }

else
{ include "hlavni.php"; }
?> 

popřípadě jak to opravit, co dopsat, aby nebylo bezpecnostni riziko ?

to je z bezpecnostneho hladiska samozrejme najlepsie co moze byt (akurat to nie je univerzalne - budes to menit furt ked pridas nejaku dalsiu stranku), ale mas to zle, a robis to zbytocne zlozito. Ak ti to staci tak ako si nacrtol, tak:

<?php
$stranka = $_GET['p'];
if($stranka == "druha" || $stranka == "treti" || $stranka == "ctvrta")
{ include($stranka."php"); }
else
{ include("hlavni.php"); }
?> 

Netestoval som ale snad tam nie su ziadne synakticke chyby

Zpět do poradny Odpovědět na původní otázku Nahoru