[linux] php -> problem s posielanim premennej

Martin Ondrovic mathew na karol.adlerka.sk
Středa Prosinec 4 13:46:55 CET 2002


Ahoj

On Wed, 4 Dec 2002, [iso-8859-1] Sam Large wrote:

> Zdravim vsetkych,
>
> najma zdatnych uzivatelov apache, mysql a najma php,
> pre ktorych bude tento problem urcite hrackou. V
> nizsie uvedenom skripte index.php sa prostrednictvom
> databazy vygeneruje stranka z odkazmi, pricom tie
> ukazuju na dalsi skript template.php, pricom mu
> predavaju parameter file s hodnotou tiez vytiahnutou z
>  databazy. Samotny problem spociva v tom ze pri
> zavolani funkcie require($file) v template.php mi toto
> vypise chybu (nieco o zlej ceste), resp. ak si dam v
> template.php len echo($file), tak nic nevypise, z coho
> usudzujem ze zo skriptu index.php do template.php nic
> nepride (?). Otazka znie preco, a ako to riesit? Nie
> nepodstatny fakt je ten, ze uvedene skripty funguju na
> apache+php+mysql pod win a cela adresarova struktura
> ulozenia suborov na win a lin je totozna, takze hlasku
> ze path nie je ok neberiem. Tusim nedavno tu nieco
> islo o problemoch s metodami post,get vs php, je mozne
> ze to nejako suvisi, resp. je to ten isty problem ?
> Osobne predpokladam, ze je to otazka nastaveni
> php.ini, neviem vsak prist na to, ktory parameter
> treba zmenit, nastavit. Tot vsjo.
> Diky
>

V ziadnom pripade nemen parametre v subore php.ini, a uz vobec nie
register_globals... Tym si zbytocne narusis bezpecnost celeho php
preprocesora. problem je v subore template.php vid nizsie

>
> /************ index.php *************/
> <?php
> $link=mysql_connect("x","y","z");
> mysql_select_db("databaza",$link);
>
> $result=mysql_query("SELECT * FROM table1 where
> premenna1=1",$link);
>
> while($myrow=mysql_fetch_array($result)) {
> echo ("<a
> href=\"template.php"."?file=".$myrow["stlpec1"].".php"."\""."target=\"_self\">".$myrow["stlpec2"]."</a>"."<br>");
> }
>
> mysql_close($link);
> ?>
>
>
>
> /************ template.php *************/
> <?php
> // echo ($file); //preco je $file prazdne ??? (php v.
> 4.2.1, apache 1.3.24)
> require($file);
> ?>

premenna $file ani nemoze existovat kedze mas vypnutu registraciu
globalnych premennych (v php.ini), ale to je ok. takze $file nahrad
$HTTP_GET_VARS['file'] a uz ti to pojede. Problem je v tom ze ak mas
vypnutu registraciu glob. prem. tak sa ti vsetky premenne transerovane
GETom ulozia do pola $HTTP_GET_VAR, popr. v novsej verzii php je to
pole $_GET, takto isto funguje i transfer dat pomocou POST
(ale $HTTP_POST_VARS popr. $_POST)... takze tak...
Paaa

>
> __________________________________________________
> Do You Yahoo!?
> Everything you'll ever need on one web page
> from News and Sport to Email and Music Charts
> http://uk.my.yahoo.com
> _______________________________________________
> http://lists.linux.sk/listinfo/linux
> http://search.lists.linux.sk
>

----[Mathew]------------------------------[Martin Ondrovic]----
----[Student&Admin SPSE K.Adlera]----------[ICQ #160838846]----
----[webmaster www.adlerka.sk]-[FTP&MySQL karol.adlerka.sk]----
Pripadne gramaticke chyby vznikli urcite transportom spravy:-))




Další informace o konferenci linux