Zum Inhalt springen

PHP-Scripte funktionieren nicht

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

Tags: Frage

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