Autor Zpráva
Rici78
Profil
při přechodu na php5 mi nevykoná funkci

<?php
function ukazclanek ()
{ 
  if ((string)$_REQUEST["clanek"]<>'') $mujclanek=$_REQUEST["clanek"]; else $mujclanek="zakl";
  if (is_file("./".$mujclanek.".htm")):
    $nazevclanku=$mujclanek.".htm";
    require $nazevclanku;
  elseif (is_file("./".$mujclanek.".php")):
    $nazevclanku=$mujclanek.".php";
    require $nazevclanku;
  else:
    $nazevclanku=$mujclanek.".htm";
    require "notfound.php";
  endif;
}
?>


Moderátor Alphard: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Alphard
Profil
Když si vypíšete $_REQUEST["clanek"], je správný?
sete78
Profil *
Trochu to upřesním v php4 to normálně funguje, ale když jsem teď přeinstaloval na php5 tak to nechodí, tak si myslím že bude chyba někde v zápisu ale nikde jsem nenašel rozdíl v zápisu php4 a php5. Jinak jsem začátečník tak nevím jak mám vypsat $_REQUEST["clanek"]
Alphard
Profil
Klasicky
echo $_REQUEST["clanek"];

A podívat se, jestli se vypisuje identifikátor požadované stránky.
bossqone
Profil *
<?php
function ukazclanek ()
{ 
  if (!empty($_GET["clanek"])) { $mujclanek = $_GET["clanek"]; } else { $mujclanek = "zakl"; }
  if (is_file("./" . $mujclanek . ".htm")) {
    $nazevclanku = $mujclanek . ".htm";
    require $nazevclanku;
  } elseif (is_file("./" . $mujclanek . ".php")) {
    $nazevclanku = $mujclanek . ".php";
    require $nazevclanku;
  } else {
    require "notfound.php";
  }
}
?>


Čo takto ? Otestuj, ja som nemal kde..
sete78
Profil *
když jsem dal
echo $_REQUEST["clanek"];

tak to vypisuje
Notice: Undefined index: clanek in C:\dev\www\func.php on line 26
a při vložení kódu od bossqoneho to vypisuje
Notice: Undefined index: clanek in C:\dev\www\func.php on line 25
a stále se nezobrazí. Zatím moc děkuji za pomoc.
Neřekl jsem že to php mám nainstalované na win7 ultimate, a instaloval jsem to podle návodu na Odkaz instalace nejnovější verse Apache, Php, My SQL krok za krokem a php info se normálně zobrazí.
Alphard
Profil
V $_REQUEST["clanek"] není správná hodnota, vlastně daný klíč vůbec neexistuje. Nenapadá mě, jak to souvisí s přechodem na PHP 5, ale chyba není ve zveřejněné části kódu. Podívejte se do adresního řádku prohlížeče, v čem se aktuální stránka přenáší, a upravte její jméno.
sete78
Profil *
Připojuji všechny zdrojáky se kterými má tato funkce pracovat jestli bi to někdo neodskoušel na svém pc
soubor: zakl.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//CZ">
<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1250">
    <META NAME="Generator" CONTENT="Golden HTML Editor 4.8.3">
    <TITLE>Bez titulku</TITLE>
</HEAD>
<BODY TEXT="Black">
<P ALIGN="left">  </P>
<P ALIGN="left"><U>Plemeno</U> - Německý ovčák</P>
<P ALIGN="left"><U>Pohlaví</U> - Fena</P>
<P ALIGN="left"><U>Datum narození</U> - 15.12.2006 </P>
<P ALIGN="left"><U>Barva srsti</U> - černá se znaky</P>
<P ALIGN="left"><U>Druh srsti</U> - krátká</P>
<P ALIGN="left"><U>Chovatel</U> <ADDRESS> Gabriela Galvasová --
<A HREF="mailto:galvasova.gabriela@tiscali.cz">galvasova.gabriela@tiscali.cz</A>
</ADDRESS> </P>
<ADDRESS>
Chovatelská stanice Němeských ovčáků<BR>
Majorův Háj<BR>
Zahořany 92<BR>
Králův Dvůr<BR>
267 01<BR>
<A HREF="HTTP://www.majoruvhaj.cz/index.html">www.majoruvhaj.cz</A><BR>
</ADDRESS>
<P ALIGN="left"><U>Majitel</U>  <ADDRESS> Vendula Lhotáková --
<A HREF="mailto:riciv@seznam.cz">riciv@seznam.cz</A>
</ADDRESS>
<ADDRESS>
Stašov 77<BR>
Zdice<BR>
267 51<BR>

</BODY>
</HTML>


soubor:navigace.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//CZ">
<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1250">
    <META NAME="Generator" CONTENT="Golden HTML Editor 4.8.3">
    <TITLE>Bez titulku</TITLE>
</HEAD>
<BODY TEXT="Black">
<p><a href="index.php?clanek=zakl">Základní údaje</a></p>
<p><a href="index.php?clanek=vystavy">Výstavy</a></p>
<p><a href="index.php?clanek=foto">Foto galerie</a></p>
<p><a href="index.php?clanek=login">Přihlásit</a></p>


</BODY>
</HTML>


soubor: index.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//CZ">
<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1250">
    <META NAME="Generator" CONTENT="Golden HTML Editor 4.8.3">
    <TITLE>Larra</TITLE>
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</HEAD>
<BODY BACKGROUND="./images/pozadi.jpg">
<?php
require "./func.php";
?>
<BODY TEXT="Black">
 <H1><B><CENTER><FONT COLOR="Blue">LARRA Majorův háj</FONT></CENTER></B></H1>
   <div align="center">
    <table width="760" cellpadding="0" cellspacing="0" border="0">
      <tr>
        <td width="760" height="240" colspan="2"><img src="./images/top.jpg" width="760" height="240"></td>
      </tr>
      <tr>
        <td width="160" valign="top">
        <?php
        require "./navigace.php";
        ?>
        </td>
        <TD VALIGN="MIDDLE" WIDTH="600"><?ukazclanek()?></td>
      </tr>
    </table>


</BODY>
</HTML>


soubor:func.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//CZ">
<HTML>
<HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=windows-1250">
    <META NAME="Generator" CONTENT="Golden HTML Editor 4.8.3">
    <TITLE>Bez titulku</TITLE>
</HEAD>
<BODY TEXT="Black">
<?php
function ukazclanek ()
{ 
  if ((string)$_REQUEST["clanek"]<>'') $mujclanek=$_REQUEST["clanek"]; else $mujclanek="zakl";
  if (is_file("./".$mujclanek.".htm")):
    $nazevclanku=$mujclanek.".htm";
    require $nazevclanku;
  elseif (is_file("./".$mujclanek.".php")):
    $nazevclanku=$mujclanek.".php";
    require $nazevclanku;
  else:
    $nazevclanku=$mujclanek.".htm";
    require "notfound.php";
  endif;
}
 echo $_REQUEST["clanek"];
?>

  

</BODY>
</HTML>


Jinak když klepnu na odkaz v levé nabídce tak adresní řádek v prohlížeči vypíše
http://localhost/index.php?clanek=zakl
sete78
Profil *
Zapoměl jsem soubor vystavy.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com">;
  <title></title>
  <style>
  h2  {color:blue}
  h4  {color:red}
  tr {text-align:center}  
  </style>

  </head>
  <body>
 <table border="1": align=center: width=100%>  
 <caption align=center><h2>Výstavy</h2></caption> 
    <tr>
        <td><h4>Datum</h4></td>
        <td><h4>Druh výstavy</h4></td>
        <td><h4>Výsledek</h4></td>    
    </tr>
    <tr>
        <td>24.10.2009</td>
        <td>Bonitace</td>
        <td>N, 2.tř</td>
    </tr>
    <tr>
        <td>13.4.2009</td>
        <td>Tř. pracovní</td>
        <td>Velmi dobrá</td>
    </tr>
    <tr>
        <td>19.7.2008</td>
        <td>Tř. mezitřída</td>
        <td>Velmi dobrá</td>
    </tr>
    <tr>
        <td>24.3.2008</td>
        <td>Tř. mladých</td>
        <td>Velmi dobrá</td>
    </tr>
    <tr>
        <td align=center>22.9.2007</td>
        <td align=center>Tř.dorost</td>
        <td>Velmi nadějná</td>
    </tr>
 </table> 
  </body>
</html>
sete78
Profil *
Tak mě napadá že když mi to nezobrazuje ty funkce v prohlížeči a to v ani jednom jak v mozile tak v exploreru, jestli to nemůže dělat nějaké zabezpečení? Bránu firewall jsem procházel a na nic jsem nepřišel.
AM_
Profil
sete78:
<TD VALIGN="MIDDLE" WIDTH="600"><?php ukazclanek()?></td>

Tohle může být chyba související s přechodem na novou verzi PHP - od nějaké verze PHP5 je defaultně vypnuté použití short_open_tagů (vyhechání "php") - dobré řešení je všude "php" doplnit, rychlé řešení je short_open_tagy v php.ini zapnout.
sete78
Profil *
Short_open_tagy jsem zapnul a stále nic pořád stejná chyba, tak nevím jestli nemám nainstalovat virtual pc na to win XP a zkusit to na tom a kdyby to šlo tak to dělají WIN 7 jinak si to nedovedu už vysvětlit.
Alphard
Profil
sete78:
Někam na začátek dejte print_r($_GET);
sete78
Profil *
Děkuji za rady ale když jsem dnes stránky přehrál jinými tak ty se začali zobrazovat nermálně akorát se stále vypisuje $_REQUEST["clanek"] který v kódu není vůbec napsaný tak si myslím že to zůstalo někde v registrech tak to vypnu a pak dám vědět.
Sirius
Profil
Jsi si jistej, že opravdu kontroluješ ty soubory, který se zpracovávaj? Nemáš je třeba v jiný složce?
AM_
Profil
sete78:
Tak mě napadá že když mi to nezobrazuje ty funkce v prohlížeči
funkce se nezobrazují v prohlížeči.

akorát se stále vypisuje $_REQUEST["clanek"] který v kódu není vůbec napsaný tak si myslím že to zůstalo někde v registrech
co se vypisuje v PHP skriptu nemá lautr nic společného s registry Windows

mám trochu pocit, že vůbec nevíš, o čem mluvíš. Funkce se spustí pokaždé, když je volána, takže musíš zjistit, zda je správně zavolána ale vypisuje špatný výsledek, nebo není zavolána. Jinak mít echo/require ve funkci není moc pěkná věc, ukazclanek() by mohlo např. vracet cestu k aktuálnímu článku a v těle HTML bys měl require ukazclanek();

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: