Ankündigung

Einklappen
Keine Ankündigung bisher.

unerklärliches Leeren von Variablen

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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

  • #2
    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.

    Kommentar


    • #3
      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.

      Kommentar

      Lädt...
      X