21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
« 1 2
Autor Zpráva
juneau
Profil
to je moznost, ale ne u tohohle webu. obecne to je nutne brat v potaz, to ano.
Martin
Profil
Pro ty co nevěděli co to phishing je http://www.tiscali.cz/mult/mult_center_040707.754391.html

Asi záleží na konkrétním webu.
llook
Profil
23k
KDYBYS MEL DATABAZI ... to je to o cem sem mluvil => SQL INJEKCE
SQL injection je trochu něco jinýho - tam jde o úpravu vstupních údajů použitých jako součást SQL dotazu.
Tohle je spíš takové PHP injection. Právě tím, že se includovaný soubor provádí (a to i ten vzdálený soubor), tak jsou to vrata jako hrom, to už je lepší readfile. V uváděné diskuzi zobrazovali kód, ale nebezpečí je mnohem víc, i bez databáze. Pokud máš například v adresáři toho webu nějaké přepisovatelné soubory, vzdálený útočník je bez problémů může přepsat.

Ale zpět k tématu.
Tohle je docela slabá stránka PHP, žádné řešení se asi nebude líbit každému.
Output buffer funkce už byli nastíněné, další možností je nevkládat obsah mezi hlavičku a patičku, ale vkládat hlavičku a patičku kolem obsahu.
Pokud chcete zachovat page controller v jednom PHP souboru, pak můžete hlavičku a patičku uzavřít do funkcí a ty pak volat z vkládaných souborů:

<?php
function hlavicka($title) {
?>
<html>
<head>
<title><?php echo($title) ?></title>
</head>
<body>
<?php
}

function paticka() {
?>
</body>
</html>
<?php
}

$dir = dirname(__FILE__).'/include-dir/';
if ((strpos($_GET['page'], '/../') === false) && file_exists($dir.$_GET['page'])) {
include($dir.$_GET['page']);
}
?>
23k
Profil
>> 23k
KDYBYS MEL DATABAZI ... to je to o cem sem mluvil => SQL INJEKCE
SQL injection je trochu něco jinýho - tam jde o úpravu vstupních údajů použitých jako součást SQL dotazu.
Tohle je spíš takové PHP injection.


Mno Ilooku nerekl bych. Jedna se stale o modifikaci URL a pokud si tahas veci z DB a nemas je radne zabezpeceny => SQL injekce , utocnik Ti muze nadelat poradnou paseku.

Videl jsem co udelal s mym webem v pocatcich hratek s DB nas externi programator. Behem 20min, mi vytahal nazvy tabulek , misto jednoho clanku mi z DB includnul vsechny a pak se mi dostal do redakcniho systemu.
RiZe
Profil
Nějaký jiný elegantní způsob neexistuje ;(
Zkusím ještě ten Krteczkuv způsob a pak teda nevim. Ještě ten od Ilooka

RiZe
23k
Profil
Jaky elegantni, nejsnazsi zpusob je si vytvorit pole , to co bylo uvedeno na zacatku. Nebo si vkladej stranky pres MYSQL a popisek mej primo v tabulce. Nevim co bys chtel ;)
Yuhů
Profil
možná se ti bude hodit jedna moje prasárna. Do šablony:

<html>
<body>
<? include "soubor.php"; ?>
</body>
</html>

občas includuju soubor této podoby:

<title>titulek stránky</title>

<h1>Nadpis</h1>
a hurá, normální text...


Funguje to. Nekamenujte mě, snažím se jenom pomoct.
23k
Profil
Yuhů? Ty includujes za tag <BODY> tag <TITLE> ?


Yuhů? Ty includujes za tag <BODY> tag <TITLE> ?


### 1) EASY zpusob FUNKCE.PHP

<?


function hlavicka($title)
{
echo
"<html>
<head></head>
.
.
<title>$title</title>
.
.
</head>";

}


function paticka()
{

echo "... to co chcete mit v zapati";

}

?>

### Stranka.php
<?
include "funkce.php"

hlavicka("TOTO JE MUJ PRVNI TITULEK");
NEJAKY STRED, menu, obsah webu
paticka();
?>

### 2) způsob pokud stranky vkladas pres $_GET cili index.php?page=NECO

tak byl uveden na zacatku, sympaticke tvoreni titulku pres POLE


### 3) navrhni si to co sem popisoval ja, stranky v DB, kazda stranka ma svoje ID, TITULEK, URL, POPIS ....


Vyber si ;)
RiZe
Profil
Já neumim MySQL, ale stáhnul jsem si Apache s PHPéčkem. Po předlouhé době ( 3dny ) jsem ho zprovoznil a teď ještě MySQL. Mám na disku nějaký seriály z linuxsoft, tak si je pročtu a snad budu moudřejší :)
23k
Profil
1+2 => nemusis umet MYSQL a prakticky ani PHP. 1 a 2 zpusob jsem Ti napsal i jini, a vystacis si s ARRAYS, INCLUDE, a jednoduchymi funkcemi ..

Tak na co cekas? ;)
thingwath
Profil
Ovládat databázi je vždycky plus, jen ho nech :-)
RiZe
Profil
2thingwath

S tím ovládáním databáze jen ho nech si myslel něco ve smyslu je to zbytečný, ale ať se to naučí, nebo jsi to myslel vážně :)
thingwath
Profil
Zbytečný to v žádném případě není, znalost databáze se nikdy neztratí. A žádná ironie, fakt :-)
RiZe
Profil
hmm, ale zapamatovat si to, to bude sranda.
RiZe
Profil
A když už jsme u tý databáze, jak by vypadalo takový zadefinování toho id stránky a následné vyvolání. To bych měl všechny stránky v databázi nebo co?
La_ToRaNTe
Profil
No jestli tu navigaci delas tak jak myslim.


<?

if (!$cast):
include "./section/uvod.php";
else:
include "./section/$cast."."php";
endif;

?>

A odkazy pak mas nejak taklhe <a href="index.php?cast=fotky">Fotky</a>
Tak by si do title moh napsat tohle
<title><? 

if (!$cast):
echo "Hlavní stránka";
else:
echo $cast;
endif;
?></title>


Můžes si s tim pak vyhrát třeba přes funkci switch ...
Doufám, že sem sem nenapsal úplnou blbost :-)
23k
Profil
table.stranky

id | nazev | popis | titulek | dalsi sloupce ...
1 | stranka1.html | testovaci HTML stranka | TOTO JE STRANKA 1
2 | kontakt.php | Stranky s kontakty | Kontaktujte me |

.
.
.

atd.

$id = $_GET['stranka'];
a pak provedes select z db => $mq = mysql_query("SELECT * from stranky where id='$id' ");
$mfa=mysql_fetch_array($mq);


a pak includujes include $mfa[1]; // vlozi prislusnou stranku

a odkaz vypada napr. takto => ?page=1 // vlozi stranka1.html


Samozrejme se to musi rozsirit o zabezpeceni, aby stranka vubec existovala, taky aby si user nemohl modifikovat URL jak se mu zachce, ale jako hruby nastin to snad STACI NE? :))
RiZe
Profil
Nějak to zabezpečit zkusim a dyžtak se zeptám. Myslím, že to je nějak s podmínkou if File_Exists. Snad. Možná :)
RiZe
Profil
Jo, jak bude vypadat SQL příkaz tohohle
23k
Profil
Ceho?

Hele nechces pro zacatek zacit s necim jednodussim? Postupne se to ucit ...
RiZe
Profil
1) Tý tabulky

2) Jo a zkousim se ucit i z prikladu ( i slozitejsich )
23k
Profil
1) a pak provedes select z db => $mq = mysql_query("SELECT * from stranky where id='$id' ");

to je SQL prikaz, struktura je zas popsana vyse ...

2) kup si book :) PHP a MYSQL -rozvoj webovych aplikaci 2vydani, WELLING , 800kc, je vynikajici a myslim ze te nauci 90% na ktery se tady ptas
RiZe
Profil
Ech! 800,- . To je docela dost chechtáků :( . Už jen jednu věc. Udělal jsem tu tabulku. Mám ID, název souboru a titulek. Jenže teď potřebuju něco, co zjistí jméno stránky a podle toho načte titulek. 2hod sem koumal a nic sem nevykoumal. Musel sem začít hrát CS abych se uklidnil :).

Není něco jako učebnice na netu? Myslím MySQL
habendorf
Profil
Je to asi trochu mimo, ale třeba ti to pomůže. Na stránce s výsledky hledání mám:
echo '<title>Výsledek hledáni výrazu&nbsp;' . stripslashes ($HTTP_GET_VARS['q']) . '</title>';

kde v q je hledaný výraz.
RiZe
Profil
2habendorf
kdybys to popsal tak bys mi docela pomohl. řekněme že odkazem vyvolám stránku news.php .A potřebuju něco co zjistí, že teď zrovna sem vyvolal news.php a přejede po tom řádku od jména stránky k titulku a ten vydoluje a potom vypíše.
Možná, že to co jsi sem dal funguje, ale nějak jsem to nepochopil :(
RiZe
Profil
ještě jsem zapomněl.
vyvolávám index.php?page=news
habendorf
Profil
RiZe: No já se v PHP skoro vůbec nevyznám, navíc koukám podle názvu tématu že má jít o inkludovaný soubor, to mi předtím uteklo. Ale třeba to k něčemu bude:

formulář:
<form action="hledej.php" method="get" ...
<input type="text" name="q" ....

a v hledej.php v hlavičce:
<?php
echo '<title>Výsledek hledáni výrazu&nbsp;' . stripslashes ($HTTP_GET_VARS['q']) . '</title>';
?>

Čili tam vypíšu obsah té proměnné, která se přenáší přes URL. V tomto případě je v ní hledané slovo.
zimmi
Profil
ja to delam takhle:
<title><?php echo $title?></title>
a potom
deklaruju:
$title=blabla
Yuhů
Profil
myslíte, že má tohle téma ještě smysl? Dobrali jsme se k něčemu? Zvládne někdo z vás napsat závěr?
llook
Profil
Pokusím se. Dobrali jsme se k několika způsobům, žádný není ideální:

1. Definovat titulek mimo vkládanou stránku - například v nějakém poli v PHP nebo v SQL databázi.

2. Využít funkce pro práci s bufferem výstupu. http://php.net/manual/cs/ref.outcontrol.php
Vkládaná stránka buďto naplní proměnnou, nebo nějak označí titulek (např. v případě vkládání pomocí readfile).

3. Z vkládaných souborů vkládat soubory se začátkem a koncem stránky.

4. Uzavřít začátek a konec stránky do funkcí a ty pak volat z vkládaného souboru. Těmto funkcím pak předávat titulek třeba parametrem.

5. Uvést titulek až v těle dokumentu - současným prohlížečům to nevadí: <html><body><title>Tohle funguje!</title></body></html>

Pokud někoho napadne ještě něco dalšího, tak ať si založí nové téma. Předpokládám, že RiZe už původní problém nějak vyřešil, takže to zamknu.
« 1 2
Toto téma je uzamčeno. Odpověď nelze zaslat.

0