php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.07.2007, 12:55  
Neuer Benutzer
 
Registriert seit: 24.06.2007
Beiträge: 6
KuShi
Standard unerklärliches Leeren von Variablen

Hallo, ich habe ein ganz merkwürdiges Problem.

Ich habe eine Seite geschrieben, die per if-Abfrage testet, ob eine bestimmte Variable per URL gesendet wurde.

Am Anfang des Scripts schreibe ich per if(isset... entweder diese Übergebenen Variablen in eine andere oder, falls sie nicht existieren, einen leeren String.

Nun frage ich ab, ob in dieser neuen Variablen etwas drin steht und wenn ja, wird ein script ausgeführt.

Ich wollte somit 3 Seiten, die Inhaltlich zusammenpassen, in einem Script unterbringen. Je nachdem, welche Variablen per Url übergeben werden, sollte eine andere Seite geladen werden.

So, die if-Abfrage funktioniert prima. Danach lade ich den Seiten-Kopft per include, in dem die Seite aufgebaut wird, Funktionen per include eingefügt, CSS und JavaScript definiert und das allgemeine Layout ausgegeben wird.
Das klappt auch noch ganz gut, aber jetzt kommt das Problem.
Direkt nachdem ich diese header.php includiere, rufe ich eine Funktion auf, der ich die Variable übergebe, die ich für die if-Abfrage verwendet habe. Nur steht jetzt auf einmal nix mehr in dieser Variablen drin, sie ist leer.

Ich bin schon die komplette Header-Datei durchgegangen, aber dieser Variablenname wird dort nicht verwendet, und das andere, was mich wundert ist, dass genau das gleiche Script auf meinem Offline-Testserver funktioniert, ohne zu meckern.

Es muss also irgend etwas im Script stehen, dass diese beiden Server (offline und online) unterschiedlich parsen.
Ich kann mir das aber nicht erklären, da ich die gleiche Header-Datei auch auf anderen Seiten verwende. und auf diesen Seiten rufe ich hinterher auch Funktionen auf, die alle funktionieren.

Habt Ihr vielleicht ne Idee, ich bin schon fast am verzweifeln.
im Folgenden liste ich alle verwendeten Scripts auf (entschuldigt bitte den etwaigen unübersichtlichen Aufbau)

Hauptscript (Fehler ab Zeile 123 bei 'elseif($city)')
PHP-Code:
<?php

$city 
'';
$order '';
$quest '';

if(isset(
$_GET['city']))
    
$city $_GET['city'];
    
if(isset(
$_GET['order']))
{
    if(
preg_match('/npc/'$_GET['order']))
        
$order ' ORDER BY quest_level ASC';
    else
        
$order ' ORDER BY quest_'.str_replace('_'' '$_GET['order']);
}
    
if(isset(
$_GET['quest']))
    
$quest $_GET['quest'];

if(isset(
$_GET['city_name']))
    
$city_name urldecode($_GET['city_name']);
    
if(isset(
$_GET['quest_name']))
    
$quest_name urldecode($_GET['quest_name']);


// Wenn eine Quest ausgewählt wurde
if($quest)
{
    
$page =     '[url="quests.php"]Quests[/url] &raquo; '.
                
'[url="quests.php?city='.$city.$order.'"]'.$city_name.'[/url] &raquo; '.
                
$quest_name;

    include 
'../technik/header.php';
    
    
$quest_city get_quest_city_data($city);
    
$quests_result get_quests($city""" AND quest_id='".$quest."'");
    
$quest mysql_fetch_assoc($quests_result);

    if(
$quest['quest_type'])
        
$type 'official';
    else
        
$type 'personal';
            
    echo 
$quest['quest_reward_intern'];
    echo 
$quest_reward_intern;
        
    
$reward explode(';'$quest['quest_reward_intern']);
    
    
$quest_level $quest['quest_level'];
    
$quest_npc_id $quest['quest_npc_id'];
    
$quest_money $quest['quest_money'];
    
$quest_id $quest['quest_id'];
    
$quest_story $quest['quest_story'];
    
$quest_todo $quest['quest_todo'];
    
?>
    
    <div id="content"> 
        <div class="text">
        
            <div class="quest_box">
            
                <div class="quest_box_left">
                    [b]Typ:[/b]

                    <?php echo $type ?>


                    [b]Level:[/b]

                    <?php echo  $quest_level ?>


                    [b]Questgeber:[/b]

                    <?php echo get_quest_npc($quest_npc_id?>
                </div>
                
                <div class="quest_box_right">
                    [b]Zeny:[/b]

                    <?php echo $quest_money ?>


                    [b]Belohnung:[/b]


                    <?php    
                        
foreach($reward as $key => $value)
                        {
                            
?>
                            
                            [img]../images/quests/<?php echo $quest_id.'/'.$value ?>.jpg[/img]').style.visibility = 'visible'"
                                onMouseOut="document.getElementById('<?php echo $value.'_desc' ?>').style.visibility = 'hidden'"
                            >
                                
                            [img]../images/quests/<?php echo $quest_id.'/'.$value ?>.desc.jpg[/img]_desc" 
                                style="visibility:visible; position:absolute">
                                                            
                            <?php
                        
}
                    
?>
                </div>
                
                <div class="clear"></div>
                
            </div>




                            
            <?php            
            
if($quest_story)
            {
                
?>
                
                <span style="font-weight:bold">Story:</span>


                
                <?php
                
echo $quest_story.'



'
;
            }
            
?>
            
            <span style="font-weight:bold">Questablauf:</span>


            <?php replace_quest_todo(nl2br($quest_todo)) ?>
        
        </div>
    </div>
    
    <?php
}
// wenn eine Stadt ausgewählt wurde
elseif($city)    // <- Hier ist die Variable noch voll
{
    
$page '[url="quests.php"]Quests[/url] &raquo; '.$city_name;
    
    include_once 
'../technik/header.php';
    
    echo 
'city_id='.$city;            // <- Hier ist die Variable leer :(
    
$quest_city get_quest_city_data($city);
    
$quests_result get_quests($city$order);
    
?>
    
    <div id="content"> 
        <div class="text">
            <table cols="2" align="center">
                <tr class="table_header">
                    <td width="70">Typ</td>
                    <td width="20">Lvl</td>
                    <td width="100">Questgeber</td>
                    <td width="300">Name</td>
                    <td width="20">Zeny</td>
                    <td width="300">Belohnung</td>
                </tr>
                <?php
            
                
while($quest mysql_fetch_assoc($quests_result))
                {
                    if(
$quest['quest_type'])
                        
$type 'official';
                    else
                        
$type 'personal';
                                                
                    
$link 'quests.php?city='.$_GET['city'].'&quest='.$quest['quest_id'].
                            
'&quest_name='.urlencode($name).'&city_name='.urlencode($quest_city['quest_city_name']).$order;
                    
?>
                                                
                        <tr class="table_select">
                            <td>[url="<?php echo $link ?>"]<?php echo $type ?>[/url]</td>
                            <td>[url="<?php echo $link ?>"]<?php echo $quest['quest_level'?>[/url]</td>
                            <td>[url="<?php echo $link ?>"]<?php echo get_quest_npc($quest['quest_npc_id']) ?>[/url]</td>
                            <td>[url="<?php echo $link ?>"]<?php echo $name ?>[/url]</td>
                            <td>[url="<?php echo $link ?>"]<?php echo $quest['quest_money'?>[/url]</td>
                            <td>[url="<?php echo $link ?>"]<?php echo $quest['quest_reward'?>[/url]</td>
                        </tr>
                        </a>
                    
                    <?php
                
}
            
                
?>
            </table>
        </div>
    </div>
    
    <?php
}
// Wenn die Seite ohne jede Auswahl geöffnet wurde
else
{
    
$page 'Quests';
    include 
'../technik/header.php';
    
?>

    <div id="content"> 
        <div class="text">
            <table cols="2" width="80%" align="center">
                <tr>
                    <td width="90%" style="border-bottom:dashed 1px #000000;">Stadt</td>
                    <td style="border-bottom:dashed 1px #000000;">#Quests</td>
                </tr>
                <?php
            
                    $quest_cities_result 
get_quest_cities();
                
                    while(
$quest_city mysql_fetch_assoc($quest_cities_result))
                    {
                        
?>
                        
                        <tr class="table_select">
                            <td>
                                <span style="font-weight:bold">
                                    <a href="<?php echo 'quests.php?city='.$quest_city['quest_city_id'].
                                                        
'&city_name='.urlencode($quest_city['quest_city_name']) ?>">
                                        <?php echo $quest_city['quest_city_name'?>
                                    </a>
                                </span>
                            </td>
                            <td><?php echo $quest_city['quest_city_count'?></td>
                        </tr>
                    
                        <?php
                    
}
                
?>
            </table>
        </div>
    </div>
    
    <?php
}

include 
'../technik/footer.php' ?>
Hier ist die Header-Datei (nur zur Vollständigkeit, die eigentlich nicht das Problem sein)
PHP-Code:
<?php 
    
    
include_once 'connect.php';
    include_once 
'functions.php';
    include_once 
'preg_replace.php';
    
    
$member get_userdata($_COOKIE['ro2fp_u']);
    
/**
* @ignore
*/
define('IN_PHPBB'true);
$phpbb_root_path '../forum/';
$phpEx substr(strrchr(__FILE__'.'), 1);
include(
$phpbb_root_path 'common.' $phpEx);
$forum_id // put whatever forum_id has similar permissions to this page.
                           // or even better, create a link to this page, set it's permissions as what you want,
                           // then use it's number here
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();
        
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title><?php if(isset($title)) echo $title; else echo 'Ragnarok Online II - deutsche Fanpage zu RO2' ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8_bin">
<?php 
    
include_once 'css2.php';
    include_once 
'javascript.php';
?>
</head>

<body>
<div id="main">

    <div id="layout">

        <div id="left">
            <?php
            
if(!isset($_COOKIE['ro2fp_u']) || $_COOKIE['ro2fp_u'] == 1)
            {
                
?>                    
                [img]../images/layout/navi_login.png[/img]
                <div class="menue_left_content">
                    <form action="../technik/login.php?from=<?php echo $_SERVER['PHP_SELF'?>" method="post" name="form_login" style="margin:0px">
                        Benutzername:
                        <input type="text" name="username" class="text">
                        Passwort:
                        <input type="password" name="password" class="text">
                        <input type="button" value="login" onClick="check_login()">
                    </form>
                </div>                    
                <?php
            
}
            else
            {
                
?>
                [img]../images/layout/navi_userpanel.png[/img]
                <div class="login_content" style="text-align:center">
                    <label>Willkommen</label>


                    <div style="float:left; text-align:left"><?php echo $member['username'?></div>
                    <div style="text-align:right">
                        <a href='../forum/ucp.php?sid=<?php echo $user->session_id ?>' title="Pers&ouml;nlicher Bereich" target="_blank">
                            [img]../images/layout/user_profil.png[/img]</a>
                        <a href='../forum/ucp.php?mode=logout&sid=<?php echo $user->session_id ?>' title="ausloggen" target="_blank">
                            [img]../images/layout/user_logout.png[/img]</a>
                    </div>                    
                    <div style="text-align:left">
                        <div style="height:50px; width:50px; float:left; border: dashed 1px #FFCC33; margin-right:5px;">
                        
                        <?php
                        
if(!$member['user_avatar_type'])
                            echo     
'<img src="../forum/styles/'.
                                    
get_style_name($member['user_style']).
                                    
'/theme/images/no_avatar.gif" width="50" height="50">';
                        else
                        {
                        
?>
                        
                        <img src="../technik/ava_resampled.php?<?php echo    'avatar='.$member['user_avatar'].
                                                                            
'&avatar_type='.$member['user_avatar_type']; ?>">
                        <?php
                        
}
                        
?>
                        
                        </div>
                        Nachrichten:



                        <label>neu: [url="../forum/ucp.php?i=pm&folder=inbox"]<?php echo $member['user_new_privmsg'?>[/url]</label>

                        <label>ungelesen: [url="../forum/ucp.php?i=pm&folder=inbox"]<?php echo $member['user_unread_privmsg'?>[/url]</label>
                    </div>
                    <?php if($member['news_writer']) echo '[url="insert_news.php"]News schreiben[/url]' ?>
                </div>
                <?php
            
}
            
?>                
            [img]../images/layout/navi_links_u.png[/img]
            
            [img]../images/layout/navi_home.png[/img]
            <div class="menue_left_content">
                [url="news.php"]News[/url]
                [url="../forum/"]Forum[/url]
                [url="contact.php"]Kontakt[/url]
                [url="linkus.php"]Link Us[/url]
                [url="affiliation.php"]Wie Affiliate werden?[/url]
            </div>
            [img]../images/layout/navi_links_u.png[/img]
            
            [img]../images/layout/navi_spielinfos.png[/img]
            <div class="menue_left_content">
                [url="story.php"]Story[/url]
                [url="features.php"]Features[/url]
                [url="jobs.php"]Klassen[/url]
                [url="races.php"]Rassen[/url]
                [url="updates_kro2.php"]kRO2 Updates[/url]
                [url="bgm.php"]Hintergrundmusik[/url]
                [url="jobchange.php"]Job Wechsel[/url]
                [url="faq.php"]FAQ[/url]
            </div>
            [img]../images/layout/navi_links_u.png[/img]
            
            [img]../images/layout/navi_links.png[/img]
            <div class="menue_left_content">
            </div>
            [img]../images/layout/navi_links_u.png[/img]
            
            [img]../images/layout/navi_statistik.png[/img]
            <div class="menue_right_content" style="font-size:9px">
                <?php include_once '../counter/counter.php'; include 'connect.php'?>
            </div>
            [img]../images/layout/navi_links_u.png[/img]
        </div>
        
        <div id="right">
            [img]../images/layout/navi_datenbank.png[/img]
            <div class="menue_right_content">
                [url="npcs.php"]NPCs[/url]
                [url="quests.php"]Quests[/url]
                [url="monsters.php"]Monster[/url]
                [url="items.php"]Items[/url]
                [url="armor.php"]R&uuml;stungen[/url]
                [url="weapons.php"]Waffen[/url]
                [url="skills.php"]Skills[/url]
                [url="crafting.php"]Itemherstellung[/url]
            </div>
            [img]../images/layout/navi_rechts_u.png[/img]
        
            [img]../images/layout/navi_spielhilfe.png[/img]
            <div class="menue_right_content">
                [url="basic.php"]Grundbegriffe[/url]
                [url="#"]Weltkarte[/url]
                [url="townmaps.php"]St&auml;dte-Karten[/url]
                [url="dungeonmaps.php"]Verlies-Karten[/url]
                [url="exp_tabelle.php"]EXP-Tabellen[/url]
                [url="stats.php"]Stats[/url]
                [url="commands.php"]Tastenbefehle[/url]
                [url="elements.php"]Elementsch&auml;den[/url]
                [url="status.php"]Statusver&auml;nderungen[/url]
                [url="weapon_guide.php"]Waffen Guide[/url]
                [url="reg_guide.php"]Registrations Anleitung[/url]
                [url="install_guide.php"]Installations Anleitung[/url]
            </div>
            [img]../images/layout/navi_rechts_u.png[/img]
            
            [img]../images/layout/navi_multimedia.png[/img]
            <div class="menue_right_content">
                [url="screenshots.php"]Screenshots[/url]
                [url="avatar.phps"]Avatare[/url]
                [url="wallpapers.php"]Wallpapers[/url]
                [url="downloads.php"]Downloads[/url]
                [url="videos.php"]Videos[/url]
            </div>
            [img]../images/layout/navi_rechts_u.png[/img]
        
            [img]../images/layout/navi_umfrage.png[/img]
            <div class="menue_right_content">
            </div>
            [img]../images/layout/navi_rechts_u.png[/img]
        </div>
        
        <div id="title">
            <?php if(isset($page)) echo $page ?>
        </div>
Hier noch alle in der Hauptseite verwendeten Funktionen:
PHP-Code:
function get_quests($city$order$quest '')
{
    if(!
$order)
        
$order ' ORDER BY quest_level ASC';

    
$query "SELECT * FROM hp_quests WHERE quest_city_id='".$city."'".$quest.$order;
    echo 
'"'.$query.'"';
    return 
mysql_query($query);
}

function 
get_quest_cities()
{
    
$query "SELECT * FROM hp_quests_cities";
    return 
mysql_query($query);
}

function 
get_quest_city_data($quest_city_id)
{
    
$query "SELECT * FROM hp_quests_cities WHERE quest_city_id='".$quest_city_id."'";
    
$result mysql_query($query);
    
    return 
mysql_fetch_assoc($result);
}

function 
get_quest_npc($npc)
{
    
$query "SELECT quest_npc_name FROM hp_quests_npc WHERE quest_npc_id='".$npc."'";
    
$result mysql_query($query);
    
    
$return mysql_fetch_assoc($result);
    return 
$return['quest_npc_name'];

Und hier noch der Link zu Seite: (Die Problemseite ist die Quest-Datenbank: Menue rechte Seite -> oberste Box -> Quests)
http://www.ragnarok-online-2.de/hp/artikel/news.php

Vielen Dank für Eure Mühen
KuShi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.07.2007, 14:48  
Neuer Benutzer
 
Registriert seit: 24.06.2007
Beiträge: 6
KuShi
Standard

okay, der Fehler erscheint direkt nach der Zeile 15 der Header.php:

include($phpbb_root_path . 'common.' . $phpEx);

Direkt vor dieser Zeile hat die Variable $city noch ihren Wert, direkt danach hat sie ihn verloren. Ich hatte schon einmal eine Fehlermeldung erhalten, dass der Server keine includes mit einem Link aus einer Variable tätigen kann.
Kommt daher vielleicht der Fehler?
Aber wenn dies der Fall ist, warum funktionieren meine anderen Seiten problemlos, nur diese macht Macken.
KuShi ist offline  
Alt 08.07.2007, 15:19  
Neuer Benutzer
 
Registriert seit: 24.06.2007
Beiträge: 6
KuShi
Standard

Okay, ich glaube, ich habe den Fehler gefunden.

In der mit

include($phpbb_root_path . 'common.' . $phpEx);

includeierten Datei steht der befehl unset($GLOBALS), womit schainbar alle übergebenen Variablen wie $_GET, $_POST etc. gelöscht werden.

Ich habe nach dem includen der header.php einfach noch mal die Variable $city mit $_GET['city'] beschrieben und nun scheint es zu funktionieren.

Dieses besch..... phpBB3 macht mich echt verrückt!

Trotzdem Danke für Eure Mühen.
KuShi ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Klasse statt globaler Variablen ecomeback PHP-Fortgeschrittene 6 15.07.2008 16:30
Übergeben von Variablen an in PHP eingebundenes Perl-Script shredder01 PHP Tipps 2008 3 04.04.2008 09:25
Datei mit Variablen so includen, dass Variablen nutzbar? BartTheDevil89 PHP Tipps 2008 6 22.01.2008 20:57
Teil einer Variablen mit einer Variablen ersetzen ? simsalabim PHP Tipps 2007 11 20.03.2007 20:36
variablen aus textfile erzeugen (shellscript) noskule Server, Hosting und Workstations 2 19.07.2006 15:42
Variable aus Variablen zusammensetzen juhuwoorps PHP Tipps 2007 1 28.11.2005 21:50
Variablen leeren themonk PHP Tipps 2005-2 6 28.10.2005 16:17
$_GET Variablen weitergeben PHP Tipps 2005 3 01.03.2005 15:36
Variablen übergeben bzw. auslesen? PHP Tipps 2005 4 30.01.2005 03:56
[Erledigt] register globals off bei variablen Variablen... PHP Tipps 2005 4 25.01.2005 17:50
Variablen leeren PHP Tipps 2005 14 06.01.2005 18:19
komplexe Variablen übergeben? PHP Tipps 2004-2 8 02.12.2004 08:29
Variablen Namen zuweisen dh1sbg PHP Tipps 2004-2 3 12.11.2004 17:12
Existenz mehrerer Variablen prüfen PHP Tipps 2004 3 31.08.2004 14:30
Variablen per adresse übergeben rocco PHP Tipps 2004 7 24.07.2004 12:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
variable geht in if abfrage verloren, php echo layout

Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.