Lauftext per php ändern

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

  • Lauftext per php ändern

    Hallo zusammen,
    meine Situation ist folgende: ich hab ein phpbb Board auf meinem Space das wir als Kollegstufenforum verwenden. In der overall_header.tpl hab ich einen <marquee> Tag, der Aktuelles und Wichtiges anzeigt. Nun ist es so das ich einzelnen Usern die Möglichkeit geben will diesen Text zu verändern. Allerdings sollen die natürlich keinen FTP Zugriff bekommen - nicht weil ich ihnen nicht traue, einfach weil die von sowas keine Ahnung haben.
    Also brauch ich irgendein Script, dass es ihnen ermöglicht, einfach diesen Text zu verändern. Mein bisheriger Versuch war das hier:

    test.php
    Code:
    <?php
    	// by Firebird
    	//
    	
    	// Hier nichts ändern
    	// Einfach nur das Script hochladen und ihm chmod 666 (777) geben
    	// Einbinden per require('marquee.php');
    	//
    	
    	$lauftext = 'Dies ist ein Lauftext mit Stil';
    	$passwort = '123';
    	
    	if(basename(__FILE__) == basename($_SERVER['PHP_SELF']))
    	{
    		if($_POST['pass'] == $passwort)
    		{
    			$text = preg_replace('/\$lauftext\s+=\s+\'(.+?)\';/', '$lauftext = \''.addslashes($_POST['text']).
    				'\';', file_get_contents(__FILE__));
    			fwrite(fopen(__FILE__, 'wb'), $text);
    		}
    		
    		preg_match('/\$lauftext\s+=\s+\'(.+?)\';/', file_get_contents(__FILE__), $text);
    		$text = $text[1];
    		echo('<form method="post" action="'.$_SERVER['PHP_SELF'].'">'.
    			'<label for="text">Text</label><input type="text" name="text" id="test" '.
    			'value="'.$text.'"/><label for="pw" name="pass" id="pass">Passwort</label>'.
    			'<input type="password" id="pass" name="pass"/><input type="submit"/>');
    	}
    	
    	echo('<marquee>'.$text.'</marquee>');
    ?>

    test2.php
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Unbenanntes Dokument</title>
    </head>
    
    <body>
    <? include('test.php') ?>
    </body>
    </html>
    hier noch die Links zu meinem Space:
    test.php
    test2.php

    wenn man sich bei der 2. den Quelltext anschaut sieht man das zumindest der <marquee> Teil stimmt, aber der Inhalt fehlt...die test.php hat natürlich als Permissions 777.

    So, falls ihr den Fehler findet würde es mich echt freuen wenn ihr mir helft, aber ich bin für Vorschläge aller Art offen die dieses Problem lösen...

    Danke euch schonmal im Vorraus,
    gruß felix

  • #2
    Ich habe die Seite aufgerufen (test.php), das PW eigegeben und mein gewünschter Text wurde angezeigt.
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      ja - der selbe Text sollte dann aber auch in der test2.php erscheinen!

      Kommentar


      • #4
        wenn du direkt die test2.php aufrufst trifft

        PHP-Code:
        if($_POST['pass'] == $passwort
        nicht zu.

        somit auch kein lauftext.

        EDIT:
        außerdem scheint mir dein ansatz falsch. ich glaube, du willst, dass spezielle user den text GLOBAL ändern können sollen, oder?

        spricht, authorisierter user ändert, alle anderen lesen die neue marquee-zeile.

        bei deinem beispiel test.php würde nur der, der den text ändert diese änderung lesen...
        Zuletzt geändert von arkos; 27.09.2007, 16:07.
        **********
        arkos
        **********

        Kommentar


        • #5
          würde es gehen ohne wenn man die Passwortgeschichte weglässt? Wie sähe die test.php dann aus?

          Kommentar


          • #6
            oh shit,
            vergiss mein edit-einwand mal. hab völlig übersehen, dass du ja versuchst, eine datei anzulegen... ich muss noch mal genauer schauen. meld mich gleich

            edit:
            so, noch mal geschaut.

            du musst die test, und die test2 mal im kopf ein wenig trennen. test ist die möglichkeit, die textdatei, die den marquee-text beinhaltet zu schreiben.

            wenn die richtig angelegt ist auf dem server (das hast du sicher überprüft, oder?) dann lies die einfach in test2 aus...

            also statt
            PHP-Code:
            include("test.php"); 
            setz mal:
            PHP-Code:
            $fp fopen "deineTextdatei.txt"'r' );
            $deinLauftext fread $fpfilesize "deineTextdatei.txt" ) );
            echo(
            '<marquee>'.$deinLauftext.'</marquee>'); 
            Zuletzt geändert von arkos; 27.09.2007, 16:27.
            **********
            arkos
            **********

            Kommentar


            • #7
              mhm eigentlich nicht!
              ich dachte das geht direkt ohne Zwischendatei...ich wollte gern dass ich mit der test.php einen Text festlegen kann der dann durch
              <? include('test.php') ?>
              in der test2.php angezeigt wird. Das funktioniert ja auch fast: in der test2.php steht ja nur
              <? include('test.php') ?>
              und im Quelltext über den Browser <marquee></marquee>. Das bedeutet das es funktioniert, aber der Text nicht übernommen wird.

              Aber wenn du eine Methode kennst die funkioniert nehm ich die natürlich auch gern!

              Kommentar


              • #8
                was denkst du, was die zeile
                PHP-Code:
                fwrite(fopen(__FILE__'wb'), $text); 
                in test.php versucht?

                sie versucht eine datei zu schreiben.

                und wenn du erreichen willst, dass einer den text ändert, und alle diesen lesen können, kommst du nicht drum rum, diesen neuen text irgendwo abzulegen. also a) datenbank, oder b) wie es hier versucht wird in eine datei.
                **********
                arkos
                **********

                Kommentar


                • #9
                  ok, das versteh ich.
                  Wie müssten die Dateien denn aussehen? Hätte auch eine mysql DB falls es mit einer Datei zu umständlich würde

                  Kommentar


                  • #10
                    sie versucht eine datei zu schreiben.
                    Und wenn ich mich nicht irre versucht sie sogar sich selber zu schreiben.
                    PHP-Code:
                    //schreibe in Textdatei (test.php)
                    fwrite(fopen('deineTextDatei.txt''wb'), $text);
                    //und in test2.php wieder auslesen
                    $text file('deineTextDatei.txt');
                    echo(
                    '<marquee>'.$text[0].'</marquee>'); 
                    oder du speicherst es in eine DB. Ganz wie es dir beliebt.

                    Gruss

                    tobi
                    Zuletzt geändert von jahlives; 27.09.2007, 16:57.
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      Und wenn ich mich nicht irre versucht sie sogar sich selber zu schreiben.
                      ist mir in der raucherpause auch gerade aufgefallen

                      übernimmst du das, jah? bin auf für heute.... flasche leer
                      **********
                      arkos
                      **********

                      Kommentar


                      • #12
                        übernimmst du das, jah? bin auf für heute.... flasche leer
                        Wieso? Wenn der TS das trotz alle bisherigen Tipps nicht schafft, dann Prost Feierabend
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          wow, PROST..... da sagst du was... ich muss weg
                          **********
                          arkos
                          **********

                          Kommentar


                          • #14
                            Teilerfolg:
                            hab eine ticker.txt hochgeladen und da was reingeschrieben - das wird jetzt in der test6.php angezeigt.

                            Was aber noch nicht klappt:
                            das beschreiben der tickert.txt...so sieht jetzt die test.php aus:

                            Code:
                            <?php
                            	// by Firebird
                            	//
                            	
                            	// Hier nichts ändern
                            	// Einfach nur das Script hochladen und ihm chmod 666 (777) geben
                            	// Einbinden per require('marquee.php');
                            	//
                            	
                            	$lauftext = 'Dies ist ein Lauftext mit Stil';
                            	$passwort = '123';
                            	
                            	if(basename(__FILE__) == basename($_SERVER['PHP_SELF']))
                            	{
                            		if($_POST['pass'] == $passwort)
                            		{
                            			$text = preg_replace('/\$lauftext\s+=\s+\'(.+?)\';/', '$lauftext = \''.addslashes($_POST['text']).
                            				'\';', file_get_contents(__FILE__));
                            			fwrite(fopen('ticker.txt', 'wb'), $text);
                            		}
                            		
                            		preg_match('/\$lauftext\s+=\s+\'(.+?)\';/', file_get_contents(__FILE__), $text);
                            		$text = $text[1];
                            		echo('<form method="post" action="'.$_SERVER['PHP_SELF'].'">'.
                            			'<label for="text">Text</label><input type="text" name="text" id="test" '.
                            			'value="'.$text.'"/><label for="pw" name="pass" id="pass">Passwort</label>'.
                            			'<input type="password" id="pass" name="pass"/><input type="submit"/>');
                            	}
                            	
                            	echo('<marquee>'.$text.'</marquee>');
                            ?>
                            habe auch mal testweise alle __FILE__ durch 'ticker.txt' ersetzt...

                            Kommentar


                            • #15
                              so erstmal ein RIESENDANKE für eure Geduld.

                              eine PHP Datei erstellt jetzt eine txt und die andere zeigt sie an - perfekt also.

                              Allerletzte Frage an euch:

                              $text = file('deineTextDatei.txt');
                              echo('<marquee>'.$text[0].'</marquee>');

                              funktioniert das auch innerhalb einer .tpl Datei?

                              Kommentar

                              Lädt...
                              X