luiggi: Include Problem

Hallo,
ich habe ein Include Problem (und ich möchte offen darüber reden).
In einer Datei test.php will ich an den Anfang und an das Ende jeweils eine Include setzen.
In den beiden Includes sitzt mein User Check für meinen geschützten HP Bereich. (die zwei Includes bilden also eine grosse IF ABfrage, beginnt in der ersten Include Datei, endet in der zweiten).
diese Includes will ich nun in alle meine Dateien einbinden, da dies ja recht schön einfach ist und eben auch übersichtlicher.
Leider geht es nicht.
Sobald ich die IF Abfrage in die zwei Includes stecke , geht es nicht mehr (leider kann ich nicht sagen, was für ein fehler, mein Design wird einfach zerschossen, aber keine Fehlermeldung).
Nehme ich den Code aus den Includes raus und binde diesen direkt in meine test.php ein, dann geht es.
Die Pfadangaben stimmen, wenn ich den Code in der Test.php habe und in der ersten include einer Variablen einen Wert zuweise, kann ich diese in der Test.php wieder abrufen.

Hier das wichtigste meines Codes:
Inc1:
if (isset($_SESSION["SID"])) {
(hier dann meine DB Abfrage und der Abgleich mit den Session Variablen)

Inc2:
   }
  else
{ $slmsg = "Keine Zugriffsrechte";}

test.php
<? include("inc1.php");  ?>

<div id="headbox">
  <h1>leer2</h1>
</div>
<div style="height:100px;">
</div>

<? include("inc2.php");  ?>

Hat jemand eine Idee? Sitze jetzt schon etwas länger dran, aber es will und will nicht werden...
Luiggi

  1. Hallo Luiggi,

    ich habe ein Include Problem (und ich möchte offen darüber reden).

    Das ist gut, mein Junge, es hilft darueber zu reden ;-)

    Ich kann dein Problem so auf Anhieb nicht nachvollziehen, wuerde aber erstmal so vorgehen:

    • sicherstellen, dass error_reporting(2047) ist
    • anstatt include require nehmen
    • die relevanten Variablen alle paar Zeilen mit print_r() ausgeben, dazu machst du am besten ganz weit oben ein echo '<pre>';

    Auf diese Art solltest du zumindest mal ein paar vernuenftige Fehlermneldungen hinkriegen.

    Gruß,

    Dieter

    1. Hallo Dieter,

      Das ist gut, mein Junge, es hilft darueber zu reden ;-)

      DAs denke ich, deshalb bin ich da....

      Leider bin ich nicht daheim, deshalb kann ich das ganze erst heute abend testen.
      Aber das mit den Variablen alle paar Zeilen ausgeben habe ich gemacht.
      Das Problem ist nur, ich habe mit Div´s einen Rahmen etc. Und solbald ich eine Fehlermeldung bekomme, verschwindet diese oftmals dahinter.
      Muss evtl. mal ohne diesen Rhamen testen, evtl sehe ich dann mehr.
      Mit include kam ich ganz gut zurecht, muss mal require testen (aber erstmal nachlesen).

      Schöne Grüsse
      Luiggi

      1. Hallo luiggi,

        Das Problem ist nur, ich habe mit Div´s einen Rahmen etc. Und solbald ich eine Fehlermeldung bekomme, verschwindet diese oftmals dahinter.

        ein kleiner Zusatz im Stylesheet hilft: div{display:block}, ganz am Ende.

        Mit include kam ich ganz gut zurecht, muss mal require testen

        Die beiden sind in der Benutzung voellig identisch, aber require wirft einen fatal error, wenn das Script nicht da ist, wo es hingehoert. Und Fehlermeldungen sind ja das, was du brauchst. Denk auch an's error_reporting(2047) direkt am Anfang des Scripts.

        Gruß,

        Dieter

        1. Hallo,
          neuer ZWischenstand:
          Habe die require, erroro_reportimg eingebunden, das mit den div(display:block;) geht nicht.
          Kopiere jetzt aber einfach die fganze Siete per STRG ALT in OWrd, dort sehe ich dann den versteckten Fehler.

          bekomme den hier:
          Parse error: syntax error, unexpected '}' in test.php on line 26

          Das gleiche Problem, wenn ich das Skript komplett in der TEST lasse, ghet es, kopiere ich es (Aber wirklich 1:1), geht es nicht.

          Muss ich in der include (bzw require) di eich ja so einbinde:
          <? require 'common/inc_m1.php'; ?>

          dann nochmal php aufmachen? Also
          <? if... ?>

          oder nur so:
          if...

          Beides geht leider nicht. Aber wäre ein Ansatz.
          teste hier mal weiter
          Luiggi

          1. Hallo luiggi,

            Habe die require, erroro_reportimg eingebunden, das mit den div(display:block;) geht nicht.

            Seltsam, naja, was immer der Fehler ist, im Quelltext der erzeugten HTML-Seite steht er auf jeden Fall drin.

            Parse error: syntax error, unexpected '}' in test.php on line 26

            In Zeile 25 fehlt das Semikolon am Zeilenende, wetten?

            dann nochmal php aufmachen? Also
            <? if... ?>

            Wenn diese Datei PHP-Code enthaelt, muss dieser auch in <?php ?> stehen, auf Shorttags (<? statt <?php) solltest du verzichten, das gibt Aerger.

            So ein bisschen Quellcode, aber bitte nicht 10 Meter, waere nicht schlecht.

            Gruß,

            Dieter

            1. Hi Diter,
              warum keine <? sondern <?php ist so bequem. Aber werde es ändern....

              Nein Z25 hat ein Semikolon (auch die davor)

              Hier der komplette code, den ich in das include stecke.

              if (isset($_SESSION['SID'])) {
                $result= mysql_query("SELECT usid as cusid, usernick FROM slusers
              where usid = '$_SESSION[SID]'
              and userid = '$_SESSION[UID]'
              ")
                OR die(mysql_error());

              $slmsg2 = mysql_error();

              if(mysql_num_rows($result)) {
                while($row = mysql_fetch_assoc($result)){
              if (($row['cusid'] == $_SESSION["SID"])
                            AND ($row['usernick'] == $_SESSION["USERNICK"]))
                { $slmsg =  "Alles klar"; }
              else { $slmsg =  "Keine Zugriffsrechte";} /* end if cusid*/
              } /* end while */
              } /* end if num_rows */
              } /* Cookies test*/
              else
              { $slmsg = "Keine Zugriffsrechte";} /*Cookies test neg */

              Soweit müsste das alles gehen, wenn es nicht included ist, geht es.
              Habeien Postin falsch eingestellt (falsche Hierachie), weiter oben.
              Da hab eich rausgefunden, das es an der äuussersten IF Schleife liegen müsste...
              Luiggi

              1. Update:
                jetzt geht der Code in EINEM Include,
                aber eben nicht in zwei Includes.
                Keine Ahnung was anders ist. Serh komische Sache das.
                Luiggi

                1. Hallo luiggi,

                  Du hast in deinem neuen Posting den Code mitten im if unterbrochen, das ist keine gueltige Syntax.

                  Gruß,

                  Dieter

                  1. Hi Dieter,

                    Du hast in deinem neuen Posting den Code mitten im if unterbrochen, das ist keine gueltige Syntax.

                    Also kann ich das nicht so machenm, wie ich es wollte.

                    dies als include 1 (Check ob es eben wahr ist)
                    <?php
                    if ($a >= "12")
                    {
                    ?>

                    dann hier der content (in der main)
                    bla bla bla

                    dies als include 2 (Ende Check ob es eben wahr ist und eine angepasste fehler anzeige)
                    <?php
                    }
                    else
                    {  $slmsg = "a ist kleiner als 12";}
                    ?>

                    Muss ich die If Abfrage in dem Include beenden, in dem sie begonnen wurde (also auch das else) ?
                    Dann muss ich mir da echt was überlegen, da ich fest davon ausgegangen war, diese unterteilen zu können und den Inhalt dazwischen anzeigen zu lassen.
                    Evtl. muss ich es umdrehen.
                    Wenn der Check nicht erfolgreich ist, Umleitung auf eine andere Seite, ansonsten Anzeige des Inhaltes.
                    Spart auch eine Include Datei...
                    Luiggi

                    1. Hallo luiggi,

                      <?php
                      if ($a >= "12")
                      {
                          include ('foo.php')
                      }
                      else
                      {
                          include ('bar.php');
                      }

                      Gruß,

                      Dieter

                      1. Hallo Diter,
                        die äussere schleife will ich aber schon in dem include haben.
                        meine datei soll dann so aussehen:

                        include ('foo.php')

                        Inhalt, Text

                        include ('bar.php')

                        Damit würde ich aber die If Anfrage in die zwei Includes stückeln müssen, das scheint aber nicht zu gehen.
                        Muss mal scheuen, ob ich mein erstes Include so umbauen kann, das dort die gesamte Userprüfung abläuft, wenn diese nicht erfolgreich ist, umleitung auf eine andere Seite.

                        Hintergrund: Ich will möglicht wenig zusätzlichen Code in den member Dateien haben (da ich das dann oft kopieren muss. Wenn es mal eine Änderung gäbe, müsste ich wieder alles anfassen).

                        Grüsse
                        Luiggi

                        1. So,
                          hiermit beende ich das Thema (Von meiner Seite)
                          habe jetzt die IF Abfrage in einem Include und im Include das Skript umgebaut.
                          Habe in die Include zwei Abbruch bedingungen eingebaut, von denen dann automatisch weitergeleitet wird.

                          Danke an Diter, der mir hier sehr geholfen hat.

                          Grüsse
                          luiggi

                          1. Hallo luiggi,

                            Danke an Diter, der mir hier sehr geholfen hat.

                            Kein Problem

                            Gruß,

                            Dieter

    2. neuer Zwischenstand:

      wenn ich das so inder test.php mache:

      if (isset($_SESSION['SID'])) {

      include("common/incm.php");

      } /* Cookies test*/
        else
      { $slmsg = "Keine Zugriffsrechte";} /*Cookies test neg */

      Dann geht es. (bekomme die richtigen Meldungen am ende angezeigt).
      Sobald ich aber nur eine Zeile mehr in das Include stecke, geht es nicht mehr.

      Anmerkung: im Include wird geschaut,ob es zu der SID & Usernick (beides in Sessions) einen eintrag in der DB gibt.
      Wenn ja, wird eine Var auf einen positiven Wert gesetzt.

      Vielen Dank für jede Idee,
      Luiggi

  2. Wie weiter oben gepostet:

    Hallo,
    ich habe folgendes Skript:
    <?php
    $a=13;
    if ($a >= "12")
    { $slmsg =  "a ist größer als b";  }
    else
    {  $slmsg = "a ist kleiner als b";}
    ?>

    Wenn ich dieses als ganzes in der Datei main oder aus einen include aus der main aufrufe geht es.

    Sobald ich dieses Skiript in zwei Includes aufteile:
    1.php:
    <?php
    $a=13;
    if ($a >= "12")
    { $slmsg =  "a ist größer als 12";
    ?>

    2.php
    <?php
    }
    else
    {  $slmsg = "a ist kleiner als 12";}
    ?>

    und beide Includes in meiner main einbinde, geht es nicht mehr:
    Parse error: syntax error, unexpected $end

    Wie bekomme ich das hin, dass ich einer IF abfrage in der ersten Include beginne, dann (wenn der dortige Check okay ist) meinen Inhalt anzeige, die IF Abfrage in der 2ten Include Datei beende und evtl eine weitere Meldung ausgebe.
    So scheint das nicht zu gehen. Hat jemand eine Idee oder eine Hilfe für mich?
    Gute Nacht,
    luiggi