Autor Zpráva
Werewolf
Profil
Ahoj. Pracuju na novym webu. Funguje tak, že se ještě před definicí typu dokumentu includuje soubor *.php, kterej definujeproměnnou $echo. Tu pak získávám v <div id="content"> pomocí GLOBAL a vypisuju ji - snažím se. Prostě se nevypíše. Kód:

index.php
<?php
session_start();
@$_type = $_GET['type']; @$_location = $_GET['location']; @$_forum = $_GET['forum']; @$_topic = $_GET['topic']; $p = "./rsrc/".$_type."/"; function i($somefori) { include($somefori); }

/* tady byla podmínka - když je $_SERVER['SERVER_NAME'] localhost, definuje to proměnný $se, $us, $pa a $da na něco, když ne, na něco jinýho (abych to nemusel editvoat, když to zkoušim na webzdarma) */
$conn = mysql_connect($se, $us, $pa);
$sel = mysql_select_db($da);
mysql_query("SET NAMES utf8");



switch ($_type) {
	case "a":
		switch ($_location) {
			case "main":
				i($p."main.php");
				$title = "Hlavní strana";
				echo($echo);
			break;
		}
	break;
	case "about":
		switch ($_location) {
			case "web":
				i($p."web.php");
				$title = "O webu";
			break;
			case "author":
				i($p."author.php");
				$title = "O autorovi";
			break;
		}
	break;
	case "forum":
		switch ($_location) {
			case "forums":
				i($p."forums.php");
				$title = "Fórum";
			break;
			case "topics":
				i($p."topics.php");
				$title = "Fórum - ".$forum['name'];
			break;
		}
	break;
	case "submit":
		switch ($_location) {
			case "login":
				i($p."login.php");
				$title = "Přihlašování";
			break;
			case "logout":
				i($p."logout.php");
				$title = "Odhlašování";
			break;
		}
	break;
}
echo("<?xml version=\"1.0\"?>\n"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs">
 <head>
  <meta http-equiv="Content-Type" content="application/xml; charset=utf-8" />
  <meta http-equiv="Content-Script-Type" content="text/javascript" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <link rel="favourite icon" href="favicon.gif" />
  <link rel="stylesheet" href="css/default.css" />
  <title>Werewolfův sklad<?php if(isset($title) && !empty($title)) { echo(" | ".$title); } ?></title>
 </head>
 <body>
  <div id="page">
  <div id="header" style="background-image: url('img/header.gif');">
  <h1 style="font-size: 22pt; font-family: Courier New; color: white; margin-left: 90px;">Werewolfův sklad</h1>
  </div>
  <div id="left">
   <ul>
	<li><a href="?type=a&location=main" title="">Hlavní stránka</a></li>
	<li><a href="?type=about&location=web" title="">O tomto webu</a></li>
	<li><a href="?type=about&location=author" title="">O autorovi</a></li>
	<li><a href="?type=forum&location=forums" title="">Fórum</a></li>
   </ul>
  </div>
  <div id="right">
  <?php if(!isset($_SESSION['w_user']) || !isset($_SESSION['w_pass']) || empty($_SESSION['w_user']) || empty($_SESSION['w_pass'])) { ?>
   <div id="login">
	<form action="?type=submit&location=login" method="post">
	 <fieldset>
	  <legend><span style="font-size: 120%; font-weight: bold">Přihlásit se</span></legend>
	  <label>Login:</label><input name="login_name" />
	  <label>Heslo:</label><input type="password" name="login_pass" />
	  <input type="submit" class="login_submit" value="Přihlásit se" />
	 </fieldset>
	</form>
   </div>
  <?php } else { ?>
   <div id="logout">
    Přihlášen/a jako: <b><?php $_logged = mysql_query("SELECT * FROM users WHERE (user = '".$_SESSION['w_user']."' AND pass = '".$_SESSION['w_pass']."')"); $logged = mysql_fetch_array($_logged); echo($logged['user']); ?></b>
	<form action="?type=submit&location=logout" method="post">
	 <input type="submit" name="logout_submit" value="Odhlásit se" />
	</form>	
   </div>
  <?php } ?>
  </div>
  <div id="content">
   <?php GLOBAL $echo; echo("\"".$echo."\"\n"); ?>
  </div>
  <div id="bottom">
   Made by Werewolf
  </div>
  </div> 
 </body>
</html>


./rsrc/a/main.php
<?php
$echo = '<h2>Novinky</h2><p>Novinka 1, novinka 2, novinka 3 a novinka 4.</p>';
?>


Kód souboru main.php píšu proto, abyste věděli, že ta proměnná je definovaná právě tady.


Nevěděl by si s tím někdo rady? Díky
fuckin
Profil *
Jestli se pletu tak pardon, ale nemel bys tu globalni promenou nacitat style $_GLOBALS["$echo"]...
Dle meho nazaru je ten web divne navrzeny, nechapu proc tam tak divne pracujes s echo()...
fuckin
Profil *
Jej sry, spatne sem to napsal to mela byt otazka, nema to vypadat takto $_GLOBALS["$echo"] ?
AM_
Profil
Werewolf
global $echo musíš mít tuším definováno v tom main.php... Btw funkce i je libový způsob, jak zprasit a znepřehlednit kód :)
fuckin
a) superglobální proměnné jsou něco úplně jiného, než globální
b) když už, tak $GLOBALS
fuckin
Profil *
aha, tak s tim sem se jeste nesetkal, k cemu je to vlastne dobre? A v cem se to lisi od $GLOBALS ?
AM_
Profil
globální proměnná je proměnná přístupná v každém kontextu (tedy např. i uvnitř funkcí či vkládaných souborů). Superglobální proměnná je zvláštní proměnná v PHP, která má tuto vlastnost automaticky.
Fakt je, že PHP se v tomhle ohledu chová vzhledem ke své jednoduchosti na úkor striktnosti trochu zvláštně, skutečný princip globálních proměnných je mnohem pochopitelnější např. v jazycích rodiny C.
Werewolf
Profil
AM_
v tom main.php
Pořád to nejde.

funkce i je libový způsob, jak zprasit a znepřehlednit kód
A jak jinak jsem to měl udělat, když ten include potřebuju už do titlu stránky?
AM_
Profil
A jak jinak jsem to měl udělat, když ten include potřebuju už do titlu stránky?
Nijak, proč funkce? prostě místo i(blabla) psát include blabla?
Pořád to nejde.
Tak máš zjevně problém jinde.Jsi si jistý, že se vůbec proměnná správně přiřadí? Vyzkoušel jsi to, jestli se ten soubor vůbec includuje?

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: