[OOP] Smarty und OOP: Object id #1

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [OOP] Smarty und OOP: Object id #1

    Hallo,
    vorweg, ich hab schon den ganzen morgen google gesucht, nach einem solchen Problem, aber was richtiges hab ich dort nicht, und nicht hier im Forum gefunden.

    Seit gestern arbeite ich mit Smarty, das funktioniert auch soweit, blos unter der Ausgabe erscheint immer ein Object id #1

    ich hab keine ahnung wo das herkommt, es müsste mit meiner index.php zusammenhängen, aber ich geb euch mal addCardSite.class.php und index.php

    index.php:
    PHP-Code:
    <?php
    /*
        @ File: index.php
        @ Autor: Benjamin Rindt
             @ Last Update: 7.July.2007
     */
    require_once("lib/mysql.class.php");

    @
    mysql_connect("""""") OR die(Mysql::ConnectFailed());
    mysql_select_db("") OR die(Mysql::dbFailed());

    define("SMARTY_DIR" str_replace('index.php'''$_SERVER['SCRIPT_FILENAME'])."libs/");
    require_once(
    SMARTY_DIR."Smarty.class.php");


    if(!empty(
    $_GET['site'])) {
    require_once(
    "lib/site/".$_GET['site']."Site.class.php");

    eval(
    "echo new ".$_GET['site']."Site();");
    } else {

    /* Startseite */
    echo new RCF();
    }
    unset(
    $smarty);
    ?>
    so ich rufe zum testen da gerade immer nur ?site=addCard auf
    addCardSite.class.php:
    PHP-Code:
    <?php
    /*
             @ package: 
             @ file: addCardSite.class.php
        @ autor: Benjamin Rindt
             @ last update: 7.July.2007
     */
    require_once("lib/firstSite.class.php");

    class 
    addCardSite extends firstSite
    {
        function 
    addCardSite() {

                 
    $smarty = new Smarty;
                
    $smarty->config_dir SMARTY_DIR;
                
    $smarty->template_dir './templates';
                
    $smarty->compile_dir './templates/compile';
                
    $smarty->compile_check TRUE;
                
    $smarty->debugging FALSE;

                     
    //abfangen wenn submitted

                     //...

                    /* $mysql = new Mysql("SELECT * FROM rcf_".$_CONFIG['mysql']['nr']."_kategorien");
                     while($row = $mysql->fetch_assoc()) {
                     $smarty->assign('Kat', $row);
                     }
                       */
                     
    $smarty->display("addCard.tpl");
             }

    }
    ?>
    ich hoffe ihr könnt mir da helfen, weil irgendwie konnte mir noch nicht geholfen werden
    Zuletzt geändert von Rudelwolf; 08.07.2007, 14:33.

  • #2
    PHP-Code:
    echo new RCF(); 

    Kommentar


    • #3
      Original geschrieben von penizillin
      PHP-Code:
      echo new RCF(); 
      die zeile ist unwichtig bzw unvollständig... bis jetzt funktioniert das noch garnicht, sondern nur der teil wenn ?site gefüllt ist

      Kommentar


      • #4
        PHP-Code:
        eval("echo new ".$_GET['site']."Site();"); 
        ist ebenso kaputt.

        http://de2.php.net/manual/en/security.filesystem.php lesen!

        Kommentar


        • #5
          ähm wieso kaputt? ich weiß das es noch unsicher ist, ich hab das auch nur zum testen hingeschrieben aber das ändert ja eigentlich nichts an meinem eigentlichen problem...
          woher kommt object id?
          PHP-Code:
          <?php
          /*
              @ File: index.php
              @ Autor: Benjamin Rindt
                   @ Last Update: 7.July.2007
           */
          require_once("lib/mysql.class.php");

          @
          mysql_connect("""""") OR die(Mysql::ConnectFailed());
          mysql_select_db("RCF") OR die(Mysql::dbFailed());

          define("SMARTY_DIR" str_replace('index.php'''$_SERVER['SCRIPT_FILENAME'])."libs/");
          require_once(
          SMARTY_DIR."Smarty.class.php");


          if(!empty(
          $_GET['site'])) {
          if(
          file_exists("lib/site/".$_GET['site']."Site.class.php")) {
              require_once(
          "lib/site/".$_GET['site']."Site.class.php");
          }
          eval(
          "echo new ".$_GET['site']."Site();");
          } else {

          /* Startseite */
          echo new RCF();
          }
          unset(
          $smarty);
          ?>
          so besser

          Kommentar


          • #6
            beschreibe doch in eigenen worten, was die zwei von mit zitierten zeilen für eine bedeutung tragen.

            Kommentar


            • #7
              Achso... naya, die auskommentierten Zeilen hier haben nichts zu bedeuten.. wollte die eigtnlich noch rausnehmen bevor ich das hier reinstelle...

              Das einzige "Problem" ist, das wenn ich addCardSite aufrufe, wird auch das Template von Smarty geholt und funktioniert aber ganz unten steht
              Object id #1
              und ich weiß nicht woher das kommt... Smarty wird im ganze Script nur in addCardsite.class.php aufgerufen, auch nicht auf der index.php...

              Kommentar


              • #8
                lies mein post noch mal aufmerksam durch und beantworte.

                Kommentar


                • #9
                  Ich versteh leider irgendwie nur nicht was du mit zitierten Zeilen meinst? welche Zeilen meinst du? Meinst du die ganzen php codes?

                  ähm, also die index.php kann man mit index.php?site=addCard aufrufen (im moment nur) , und so wird die addCardSite.class.php geholt und die addCard aufgerufen.. damit soll das Template addCard.tpl von Smarty aufgerufen werden... ja nun, wird es aufgerufen sind die oben genannten Wörter da

                  Kommentar


                  • #10
                    das wort "zitat" noch nie in der schule gehört?
                    PHP-Code:
                    echo new RCF(); 
                    PHP-Code:
                    eval("echo new ".$_GET['site']."Site();"); 
                    was bedeuten diese zeilen? was passiert darin?

                    Kommentar


                    • #11
                      achso, das mit heißt mir in deinem beitrag (ich les wirklich unkonzentriert)

                      new RCF(); macht(bzw wird mal) die startseite aufrufen, aber über diese zeile bin ich mir noch nicht recht im klaren ob das von der logik stimmt.. nein eher nicht..

                      im eval wird da die klasse aufgerufen im fall von ?site=addCard die klasse addCardSite

                      Kommentar


                      • #12
                        grob ok. welche rolle spielt echo darin?

                        Kommentar


                        • #13
                          das gibt das ganze aus... da in der klasse nur das smarty display nur als return gegeben wird

                          oder funktioniert das dort anders?

                          Kommentar


                          • #14
                            das ist nicht korrekt. lies besser in der literatur nach, wie ein konstruktor funktioniert. sein rückgabewert ist niemals eine "ausgabe", sondern das erstellte objekt.

                            Kommentar


                            • #15
                              ah thx, ich stand auf der leitung, ich muss da jetzt einiges umcoden, dann schreib ich nochmal wenn object id kommt

                              Kommentar

                              Lädt...
                              X