Zum Inhalt springen

PHP-Scripte funktionieren nicht

Erstellt am 17. März 2005 · 15 Antworten · letzte Antwort am 28. März 2005

Tags: Frage

juelobe ·

Hallo,

ich habe folgendes Problem:
Ich möchte in eine vorhandene Seite im content-Bereich ein fertiges PHP-Script (ODP), das mehrere andere Dateien included, einbinden. Ich habe dafür zwei verschiede Varianten probiert:
1. Auf der besagten Seite habe ich ein extension template angelegt und im Setup folgenden Code eingegeben:

tt_content.script = CASE
  tt_content.script {
    key.field = select_key
    ODP= PHP_SCRIPT_EXT
    ODP.file = uploads/google/odp/index.php
  }

Der Inhalt der Indexseite wird auch dargestellt, mit allen includierten Dateien. Wenn ich nun einen Link innerhalb dieser Seite anklicke, werden die entsprechenden Parameter angehängt, aber ich lande immer wieder auf der index.php (Startseite) meiner Typo-Seite, wobei dann in der Adresszeile die Übergabeparameter des Links angehängt sind. Das sieht dann so aus: http://xxxx.de/cms/index.php?browse=/World/Deutsch/

2. Ich habe auf einer anderen Seite die Extension page_php_content installiert. Den Code der index.php habe ich dann als Seiteninhalt eingegeben und die Pfade für die include-Dateien angepasst. Diese Dateien habe ich in fileadmin abgelegt (ich weiß man darf keine php-Scripts uploaden, aber momentan bin ich der einzige der Zugriff auf das BE hat und es diente nur dem Test). Die Anzeige mit den Links erscheint zwar, aber auch hier ist das gleiche Problem wie schon unter 1. beschrieben, dass die Parameter angehängt werden, ich aber immer wieder auf der index.php meiner Seite lande.

Ich muss sagen, dass ich noch nicht lange mit Typo3 arbeite, und meine Kenntnisse entsprechend bescheiden sind. Deshalb wäre ich sehr dankbar, wenn ich hier kompetente Unterstützung erhalten könnte. Bei meinen Recherchen habe ich in einem anderen Forum Einträge von Usern mit ähnlichen Problemen gelesen, die dann zu dem Schluss kamen, dass komplexe php-Anwendungen in Typo3 nicht funktionieren. Das kann ich nur schwer glauben.

Gruß
juelobe

rolli ·
juelobe schrieb

Hallo,

. . .
Die Anzeige mit den Links erscheint zwar, aber auch hier ist das gleiche Problem wie schon unter 1. beschrieben, dass die Parameter angehängt werden, ich aber immer wieder auf der index.php meiner Seite lande.. . .

Hallo juelobe,

genau das gleiche Problem habe ich auch.

Es ist wohl möglich 1 (ein) Skript in eine Seite von Typo3 einzubinden. Wenn ich das mal ganz einfach sehen darf: Diese Skript arbeitet sich dann selber ab. Weitere Übergaben an das Script was über die entsprechenden Angaben in TS-Setup eingebunden wurden, funktionieren wohl NICHT 🙁
Jedenfalls gibt es hier im Forum und anderswo:
http://www.typo3faq.net/index.php?sid=187868&aktion=artikel&rubrik=005&id=6&lang=de
keine entsprechenden Lösungen. Zumindest habe ich noch nichts (über die Suche) gefunden wie man eine ganze PHP-Anwendeung (z.B. ein "externes" PHP-Gästebuch oder eine "externe" größere Anwendung wie z.B. eine PHP-Linksammlung) als Skript per TS-Setup in Typo3 einbinden kann und diese dann auch den kompletten funktionellen Umfang haben, wie sie Ihn als eigenständig laufendes Skript haben.
Alles was darauf abziehlt (siehe aw_stats oder PHPmyAdmin innerhalb von Typo3) erforden wohl höhere Programmierfähigkeiten und die Fähigkeit Extensions programmieren zu können. Da hilft Dir auch kein "Kickstarter" nichts 🙁

Hier hat wohl Typo3 mal keine Lösung parat.

Deshalb, nicht immer ist Typo3 für einen Internetauftritt das geeignete Mittel.
Oder gibt es für genannte Zwecke eine Lösung (ohne die einzubindente Anwendung neu programmieren zu müssen oder schwere PHP-Programmierung anwenden zu müssen)?

MFG
Rolli

just2b ·

gibt da ne extension.... aber muss sagen, nie ausprobiert, weiß nur dass es sie gibt => Page PHP Content - page_php_content

dds a non-cached "PHP Script" page content type. You can enter a snippet of PHP code as a part of a page and have it executed when building a page without writing an extension or going through tag processing with parseFunc. Uses the "dreaded" PHP eval() and output buffering.

lg georg

rolli ·
just2b schrieb

gibt da ne extension.... aber muss sagen, nie ausprobiert, weiß nur dass es sie gibt => Page PHP Content - page_php_content

dds a non-cached "PHP Script" page content type. You can enter a snippet of PHP code as a part of a page and have it executed when building a page without writing an extension or going through tag processing with parseFunc. Uses the "dreaded" PHP eval() and output buffering.

lg georg

Gleiches Problem, s.o.

[Edit]

. . . a non-cached "PHP Script" page content type. . . .

Die Rede ist immer von ein Script! keine ganze PHP-"Anwendung".

MFG
Roland

TW ·

hallooooooooooooooooooooooooooooo?

is doch egal, ob ne komplette applikation oder nur ein script.....

benutze die extension

Page PHP Content - page_php_content

wenn du die installiert hast, kannst du php code direkt in die extension eingeben......

und wenn man das alles was kann, kann man so auch externe php dateien lockwer und leicht inkludieren...

also wo is das problem ???

cu

Hille ·

Hi,
kann mich nur TW anschliessen.
Habe heute vormittag mal die EXT: page_php_content installiert und ausprobiert.
Fazit: 😃
- HTML-Code auch mit PHP gemischt möglich
- php-Dateien, die in einer Verzeichnisstruktur liegen, können auch per include eingebunden werden.
- Der Code muss allerdings nach gewissen Regeln eingegeben werden.

Werde im laufe der Woche ein Tuturial (mit entsprechenden Screeshots) auf meiner Homepage veröffentlichen, um allen Interessierten eine Hilfestellung zu geben. Vielleicht ist das ja auch was für typo3.org?
Natürlich ist PHP- und MySQL-Wissen hier nötig, ansonsten sieht man ja nicht die Eigenheiten/Unterschiede.
Falls vorher schon Anfragen bestehen, schickt mir ne PM.
Gruß
Hille

juelobe ·

Hallo,

danke erst einmal für die Antworten. Mich hätte es auch ehrlich gesagt gewundert, wenn es mit Typo3 nicht möglich gewesen wäre, fertige PHP-Anwendungen einzubinden.
Was mein Problem angeht, möchte ich vornweg nochmal sagen, dass ich die Extention page_php_content schon installiert, und damit auch getestet habe (wie oben beschrieben).

TW schrieb

wenn du die installiert hast, kannst du php code direkt in die extension eingeben......

und wenn man das alles was kann, kann man so auch externe php dateien lockwer und leicht inkludieren...

also wo is das problem ???

Da liegt ja mein Problem, dass es eben nicht so locker funktoniert. Beim Klick auf einen Link (der über eine include-Datei generiert wird) lande ich immer wieder auf der index.php (Startseite).

Hille schrieb

Habe heute vormittag mal die EXT: page_php_content installiert und ausprobiert.
Fazit:
- HTML-Code auch mit PHP gemischt möglich
- php-Dateien, die in einer Verzeichnisstruktur liegen, können auch per include eingebunden werden.
- Der Code muss allerdings nach gewissen Regeln eingegeben werden.

Wäre schon interessant zu erfahren, wie diese Regeln aussehen. Bin schon mal gespannt auf das Tutorial. Finde ich übrigens eine klasse Idee.

Danke nochmal.
Gruß
juelobe

rolli ·
juelobe schrieb

Hallo,

danke erst einmal für die Antworten. Mich hätte es auch ehrlich gesagt gewundert, wenn es mit Typo3 nicht möglich gewesen wäre, fertige PHP-Anwendungen einzubinden.

. . .

Da liegt ja mein Problem, dass es eben nicht so locker funktoniert. Beim Klick auf einen Link (der über eine include-Datei generiert wird) lande ich immer wieder auf der index.php (Startseite).

Hille schrieb

Habe heute vormittag mal die EXT: page_php_content installiert und ausprobiert.
Fazit:
- HTML-Code auch mit PHP gemischt möglich
- php-Dateien, die in einer Verzeichnisstruktur liegen, können auch per include eingebunden werden.
- Der Code muss allerdings nach gewissen Regeln eingegeben werden.

Wäre schon interessant zu erfahren, wie diese Regeln aussehen. Bin schon mal gespannt auf das Tutorial. Finde ich übrigens eine klasse Idee.

Danke nochmal.
Gruß
juelobe

Hallo,

Da bin ich auch einmal gespannt, wie diese Regeln aussehen.
Ich lande bei einem Klick zwar nicht auf der Index-Seite von dem Typo3-Baum. Bei mir wird die aufgerufene Seite außerhalb des "Content-Rahmens" von Typo3 aufgerufen, und bildet wieder seine eigene PHP-Anwendung unabhängig und außerhalb von der Typo3-Umgebung 🙁

MFG
rolli

PS:
Wie oben schon geschrieben, ein (einfaches) PHP-Script einzubinden in Typo3 ist kein Problem.

Hille ·

Hallo Typo3-Gurus,
das TUT ist fertig. Bin aber noch nicht damit zufrieden.
Wollte einfach mal Eure Neugierde befriedigen.

http://hdh-soft.de/cms/index.php?id=73

Die Links müssen immer mit der entsprechenden ?id=xx übergeben werden.
Ist aber auf den Screenshots (bei Klick vergrößern -ich liebe Typo3-) 😃 zu erkennen.

Nächste Ausbaustufe wird die Datenbankanbindung in selbst erstellte Datenbanktabellen sein.

Ihr könnt auch aktiv mitarbeiten, dann stellen wir es als "Deutsches Tuturial" auf Typo3.org ins Repository.

Gruß
Hille

PS: Hille ist mein Spitzname, den mein 1.Fussballtrainer (da war ich 7) mir gab, weil mein Nachname ihm zu lang war und mein Doppelvorname auch. o.O

juelobe ·

Guten Morgen,

Hille schrieb

Hallo Typo3-Gurus,

...wenn ich das nur schon von mir behaupten könnte #giggle#

Das Tut finde ich klasse und auch sehr gut erklärt, nur mein Problem löst es leider nicht. Ich hänge da irgendwie fest und dreh mich im Kreis. Die Übergabe mit "simplen" POST-Variablen wäre nicht das Problem. Das Script das ich habe ist wesentlich umfangreicher und komplexer. Darin sind Post- und Get-Variablen enthalten, mit mehreren include-Dateien und das Script ruft sich über php_self auch noch selbst auf.
Ich bin kein rießen PHP-Crack und in T3 auf noch recht frisch, darum fällt es mir schwer den richtigen Ansatzpunkt zu finden.

Bin dankbar für jede weitere Hilfe oder jeden Tipp.

Viele Grüße
juelobe

Hille ·

Haste mal einen Script-Ausschnitt, wo der $PHP_SELF bzw. die $_POST und $_GET Angaben stehen?
Vielleicht kann ich Dir helfen. #paralyzed#

Hille

juelobe ·
Hille schrieb

Haste mal einen Script-Ausschnitt, wo der $PHP_SELF bzw. die $_POST und $_GET Angaben stehen?
Vielleicht kann ich Dir helfen. #paralyzed#
Hille

Hallo Hille,

hier ist ein Codeausschnitt (ok, fast der komplette):

  global $myrooturl,$searchstring,$filename;
   $filename = $PHP_SELF;
?>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?
    $sponsor_file_search = "sponsor.php";   // default
    $sponsor_file_browse = "sponsor.php";   // default

   // replacement variables
   $replace = $filename . "?browse=";
   $linkstr = '<a href="';
   $odp_image_path = '/img/';
   $your_image_path = '';
   $search_next = '<a href="search';
   $search_next_replace = '<a href="' . $filename;
   $searchurl = "http://search.dmoz.org/cgi-bin/search?search=";

   $startstr = "<table cellspacing";             // start str to search for on the main page
   $endstr = "</td></tr></table>";                // end str to search for on the main page
   $startbrws = "<hr>"; // start str to search for when browsing
   $endbrws = '<table width="95%" cellpadding=0';   // end str to search for when browsing
   $startsrch = '<CENTER>Search:';                // start str to search for when searching
   $endsrch = '<TABLE cellpadding=0';             // end str to search for when searching
   $noresult = ' results found'; // feedback from dmoz.org when no sites are found

   /****************************************************************************
    * Some useful functions
    ****************************************************************************/

   /**
    * urlencode the link
    */
   function linkencode($url) {
      $odpurl = urlencode($url);

      return str_replace (
         array("%2F", "%26","%3A", "%3F", "%3D", "%2C"),
         array("/","&",":","?","=",",")
         , $odpurl);
   }


   /**
    * Make sure incomming $browse variable is 'clean'
    */
   function cleanBrowse($browse) {
      if($browse == "/") return "";
      else {
         if(get_magic_quotes_gpc()) {
            return stripslashes($browse);
         } else {
            return $browse;
         }
      }
   }

   /**
    * Make sure incomming search variable is 'clean'
    */
   function cleanSearch($search) {
      return strip_tags($search);

   }

   /**
    * Will display an error message to the webmaster
    */
   function errorMsg( $msg ) {
      echo "<center><table width='300' border='0' cellspacing='1' cellpadding='0' bgcolor='#000000'><tr><td>";
      echo "<table width='100%' bgcolor='#CC0033' border='0' cellspacing='4' cellpadding='0'>";
      echo "<tr><td align='center'><font face='Arial' size=3 color='#FFFF00'><b>ERROR</b></font><br><br>";
      echo "<font face='Arial' size=2 color='#ffffff'>$msg</font>";
      echo "</td></tr></table></td></tr></table></center>";
   }

   /**
    * Will read data from dmoz, or the local cache (if enabled)
    */
   function readData( $odpurl ) {
      global $enable_cache, $cache_folder, $cache_timeout;

      if($enable_cache) {
         $filename = md5($odpurl);
         $fullpath = $cache_folder."/".$filename;

         if(file_exists($fullpath)) { // already cached
            if($cache_timeout == 0) {
               $odpurl = $fullpath;
            } else {
               $diff = time()-filemtime($fullpath);
               if($diff > $cache_timeout) {
                  $savecache = true;
               } else {
                  $odpurl = $fullpath;
               }
            }
         } else {
            $savecache = true;
         }
      }

      if((@$fp = fopen( $odpurl, "r" )) != false) {
         $html = join( "", file( $odpurl ) );
         fclose ( $fp );

         if($savecache) {
            if((@$cf = fopen( $fullpath, "w" )) != false) {
               fwrite($cf, $html);
               fclose( $cf );
            } else {
               errorMsg("Error writing to cache!<br>Make sure the cache folder exists and is writable by this script (you may also disable the cache)");
            }
         }

      } else {
         errorMsg("Error reading data from dmoz!<br>Make sure the dmoz url is correct");
      }

      return $html;
   }

   /****************************************************************************
    * Main script start
    ****************************************************************************/

   $browse = cleanBrowse($HTTP_GET_VARS["browse"]);
   $ver = $HTTP_GET_VARS["ver"];

   $searchstring = $HTTP_POST_VARS["search"];
   if($searchstring == "") $searchstring = $HTTP_GET_VARS["search"];
   $searchstring = cleanSearch($searchstring);

   $start = intval($HTTP_GET_VARS["start"]);
   $morecat = htmlspecialchars($HTTP_GET_VARS["morecat"]);

if( $browse != "" ) {                     // the user is browsing the categories
      include("includes/browse_header.php");
      include("includes/" . $sponsor_file_browse);

      $browselink = linkencode($rooturl.$browse);
      $html = readData($browselink);
      if($html != "") {

         $startpos = strpos( $html, "[ <a" );
         if($startpos != FALSE) $abc = TRUE;

         if($abc == FALSE) $startpos = strpos( $html, $startbrws );
         $html = substr( $html, $startpos, strlen($html));
         if($abc == TRUE) $html = "<br><center>" . $html;

         $endpos = strpos( $html, $endbrws );
         $html = substr( $html, 0, $endpos );

         $html = str_replace( $linkstr . "/", $linkstr . $replace . "/", $html );
         $html = str_replace( '<img src="' . $odp_image_path, '<img src="' . $your_image_path, $html );


         if($show_thumbnails) {

            $lines = explode("
", $html);

            for($i=0; $i<count($lines); $i++) {
               $curline = $lines[$i] ;

               if(eregi("<li><a href="(.*)">(.*)</a> - (.*)", $curline, $info)) {
                  $url = $info[1];
                  $title = $info[2];
                  $desc = $info[3];

                  if(eregi("(.*)<a", $desc, $descarr)) {
                     $senddesc = htmlentities($descarr[1]);
                  } else {
                     $senddesc = htmlentities($desc);
                  }

                  $gourl = $url;

                  if(strpos($url, $HTTP_SERVER_VARS["PHP_SELF"]) === false) {
                     echo "<table><tr><td width='120'><img src='http://open.thumbshots.org/image.pxf?url=$url' border='0' onload='if (this.width>50) this.border=1'></td>"
                     ."<td><li><a href="$gourl">$title</a> - $desc.</td></tr></table>";
                  } else {
                     echo $curline;
                  }

               } else {
                  echo $curline;
               }
            }
         } else {
            echo $html;
         }
      } else { // open failed
         include("includes/404.php");
      }
                echo "<br><center>";
                echo "<table border='0' bgcolor='#336600' cellpadding='3' cellspacing='0'>";
                echo "<tr>";
                echo "<td>";
                echo "    <table width='100%' cellpadding='2' cellspacing='0' border='0'>";
                echo "        <tr align='center'>";
                echo "        <td><font face='sans-serif, Arial, Helvetica' size='2'";
                echo "            color='#FFFFFF'>Hilf, das gr&ouml;sste von Menschen editierte";
                echo "            Verzeichnis des WWW zu erstellen.</font></td></tr>";
                echo "        <tr bgcolor='#CCCCCC' align='center'>";
                echo "        <td><font face='sans-serif, Arial, Helvetica' size='2'> <a";
                echo "            href='http://dmoz.org/cgi-bin/add.cgi?where=$browse'>URL";
                echo "            vorschlagen</a> - <a href='http://dmoz.org/World/Deutsch/about.html'><b>Open Directory";
                echo "            Project</b></a> -";
                echo "            <a href='http://dmoz.org/cgi-bin/apply.cgi?where=$browse'>Werde";
                echo "            Editor</a> </font>";
                echo "        </td></tr>";
                echo "    </table>";
                echo "</td>";
                echo "</tr>";
                echo "</table>";
                echo "<br></center>";
      include("includes/footer.php");
      include("includes/copyright.php");

   }
   else if( $searchstring != "" ) {               // the user is searching
      include("includes/header.php");
      include("includes/" . $sponsor_file_search);
      $searchurl = linkencode($searchurl . $searchstring . ($start == "" ? "" : "&start=" . $start ) . ($morecat == "" ? "" : "&morecat=" . $morecat));

      $html = readData( $searchurl );

      if( strpos( $html, $noresult) != FALSE ) {         // no results found
         include("includes/no_result.php");
      } else {

         $startpos = strpos( $html, $startsrch );
         $html = substr( $html, $startpos, strlen($html));
         $endpos = strpos( $html, $endsrch );
         $html = substr( $html, 0, $endpos );

         $html = str_replace( $linkstr . "/", $linkstr . $replace . "/", $html );
         $html = str_replace( "http://dmoz.org", "$filename?browse=", $html );
         $html = str_replace( $search_next, $search_next_replace, $html );
         $html = str_replace(  $filename . '?browse=search?', $filename . '?', $html );
         $html = str_replace( '<img src="' . $odp_image_path, '<img src="' . $your_image_path, $html );

         if($show_thumbnails) {

            $lines = explode("
", $html);

            for($i=0; $i<count($lines); $i++) {
               $curline = $lines[$i] ;

               if(eregi("<li><a href="(.*)">(.*)</a> - (.*)", $curline, $info)) {
                  $url = $info[1];
                  $title = $info[2];
                  $desc = $info[3];

                  if(eregi("(.*)<a", $desc, $descarr)) {
                     $senddesc = htmlentities($descarr[1]);
                  } else {
                     $senddesc = htmlentities($desc);
                  }

                  $gourl = $url;

                  if(strpos($url, $HTTP_SERVER_VARS["PHP_SELF"]) === false) {
                     echo "<table border='0'><tr><td><img src='http://open.thumbshots.org/image.pxf?url=$url' border='0' onload='if (this.width>50) this.border=1'></td><td>"
                     ."<li><a href="$gourl">$title</a> - $desc."
                     ."</td></tr></table>";
                  } else {
                     echo $curline;
                  }

               } else {
                  echo $curline;
               }
            }
         } else {
            echo $html;
         }

      }
      include("includes/footer.php");
   }
   else {      // show main page
      include("includes/header.php");
      if($rootcategory == "") {

         $html = readData($rooturl);
         $startpos = strpos( $html, $startstr );
         $html = substr( $html, $startpos, strlen($html));
         $endpos = strpos( $html, $endstr );
         $html = substr( $html, 0, $endpos );


         $html = str_replace( $linkstr , $linkstr . $replace, $html );
         $html = str_replace( '<img src="' . $odp_image_path, '<img src="' . $your_image_path, $html );

Ich sag schon mal DANKE für Deine Bemühungen.

Gruß
juelobe

Hille ·

Hmm....
ist doch ein wenig zu umfangreich.
Irgendwie schnall ich nicht, was der Code macht.
Sorry, aber ist ein wenig zu konfus für mich.
Hille

juelobe ·
Hille schrieb

Hmm....
ist doch ein wenig zu umfangreich.
Irgendwie schnall ich nicht, was der Code macht.
Sorry, aber ist ein wenig zu konfus für mich.
Hille

Hallo Hille,

schade.😢 Damit ist Typo wohl aus dem Rennen. Die Sache liese sich zwar auch per IFrame integrieren, aber für das Projekt ist die Suchmaschinenrelevanz zu sehr von Bedeutung. Aber nach all den Versuchen und Tests, bin ich mittlerweile auch der Meinung dass T3 für das Einbinden von sehr umfangreichen PHP-Scripten nicht geeignet ist. Da bliebe wahrscheinlich nur die Lösung eine eigene Extension zu schreiben, aber dafür sind meine Kenntnisse zu bescheiden um eine solche zu erstellen.
Trotzdem Danke für Deine Bemühungen. Sollte ich doch noch auf eine Lösung stoßen, werde ich diese natürlich bekannt geben.

@all
Das o.g. genannte Script (und die daranhängenden Scripte) sind für die Integratioin von ODP (http://dmoz.de/) verantwortlich. Es gibt hierfür auch eine Extension mit dem Namen odp_grabber. Allerdings ist diese nur mit dem Status Alpha vorhanden. Hat jemand Erfahrung mit dieser Ext?

Gruß
juelobe

rolli ·
juelobe schrieb

. . .
schade.😢 Damit ist Typo wohl aus dem Rennen.

An dieser Stelle hat Typo3 wohl echt eine Schwäche 🙁
Dazu gab es bisher noch nie eine Antwort, die das Porblem nur annähernd lösbar machte, s.o.

juelobe schrieb

Die Sache liese sich zwar auch per IFrame integrieren, . . .

Das war schon oft die Antwort darauf.

juelobe schrieb

Trotzdem Danke für Deine Bemühungen. Sollte ich doch noch auf eine Lösung stoßen, werde ich diese natürlich bekannt geben.

Das würde sicherlich viele Nutzer freuen 🙂

MFG
rolli