[PHP] Variablenproblem

Dieses Thema im Forum "Webentwicklung" wurde erstellt von leex, 5. September 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 5. September 2010
    Variablenproblem

    <?php
    $filename = $_POST['seite'];
    echo $filename;
    if(isset($_POST['save'])) {
    echo "Dateiname: " . $filename;
    file_put_contents($filename, $_POST['content']);
    }
    ?>

    habe diesen code.....das erste echo gibt er noch richtig aus, aber innerhalb der schleife kennt er die variable $filename aufeinmal nicht mehr. Warum?!
     
  2. 5. September 2010
    AW: Variablenproblem

    Ist ($_POST['save']) denn wirklich gesetzt?
     
  3. 5. September 2010
    AW: Variablenproblem

    ja könnt ihr euch auch anschauen

    geht hier um den tinymce editor, den ich dazu bewegen will den inhalt zu speichern
     
  4. 5. September 2010
    AW: Variablenproblem

    also dein
    echo $filename; krieg ich ebenfalls nicht ausgegeben

    Kann es sein das du zufällig iwas mit header("location: xyz.php") oder n meta tag drin hast, das die seite noch ma neu lädt oder so?

    Also auch rein vom HTML stimmt das alles eigentlich, er kriegt nur den $_POST von deinem Dropdown nicht, aus irgendwelchen gründen...
     
  5. 5. September 2010
    AW: Variablenproblem

    ja als else hab ich einen header drin

    Code:
    <?php
    
    $geheim_wort = 'geheim';
    unset ($_POST["$username"]);
    
    if($_COOKIE['login']){
     list($c_username, $cookie_hash) = split(',', $_COOKIE['login']);
     if(md5($c_username.$geheim_wort) == $cookie_hash){
     $_POST["$username"] = $c_username;
     } else {
     echo "Sie besitzen kein gültiges Cookie!";
     }
    }
     
    if($_POST["$username"]){
     echo "<div id=\"loggedin\">";
     echo " Guten Tag " . $_POST["$username"] ."<br>";
     echo "<a href='logout.php'><input type=\"submit\" value=\"Ausloggen\"></a>";
     echo "</div>";
     echo "<link type=\"text/css\" href=\"style.css\" rel=\"stylesheet\" media=\"screen\" />";
    ?>
     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
    <head>
    <title>Contents bearbeiten</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    
    <script type="text/javascript" src="/tiny_mce/tiny_mce.js"></script>
    
    <script type="text/javascript">
    tinyMCE.init({
     mode : "textareas",
     elements : "full_text",
     theme : "advanced",
     skin : "default",
     plugins: "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras",
     
    theme_advanced_buttons1 : "save,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons2 :"cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
     theme_advanced_toolbar_location : "top",
     theme_advanced_toolbar_align : "center",
     theme_advanced_statusbar_location : "bottom",
     theme_advanced_resizing : false,
     
    
    });
    
    
    </script>
    
    <body>
    <div id="bearbeitung">
    <form method="post" action="edit.php">
     <p> 
     <select name="seite" style="background:transparent; border: thin solid; border-color: #182B63;">
     <option value="home.php" id="home.php">Home</option>
     <option value="news.php" id="news.php">News</option>
     </select>
     <input type="submit" value="&Ouml;ffnen" />
     </p>
    </form>
    
    <?php 
    $filename = $_POST['seite']; 
    echo "Dateiname(vor if): " . $filename . "<br>"; 
    if(isset($_POST['save'])) {
    echo "Dateiname(nach if): " . $filename . "<br>";
    file_put_contents($filename, $_POST['content']);
    }
    ?>
    
    
    
    <form method="post" action="edit.php">
     <p> 
     <textarea name="content" cols="100" rows="45"><?php if(isset($existing_text)){echo file_get_contents($filename);}?></textarea>
     <input type="submit" value="Speichern" name="save" />
     </p>
    </form>
    </div>
    </body>
    </html>
    <?php
    } else {
     echo header('Location: login.php');
     }
     
  6. 5. September 2010
    AW: Variablenproblem

    wo ist $username definiert und warum löscht/speicherst du das in $_POST ?
     
  7. 5. September 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Variablenproblem

    kommt von der login.php, aber hat ja nix mit dem problem zu tun ...

    hier mal die 3 dateien:

    No File | xup.in
     
  8. 5. September 2010
    AW: Variablenproblem

    was du auch noch zum debuggen gut machen könntest wäre $_POST mal auszugeben und zu schauen was denn alles übergeben wurde, um fehlerquellen auszuschließen

    PHP:
    <? php
    echo  '<pre>' ;
    print_r ( $_POST );
    echo 
    '</pre>' ;
    edit: hab den fehler...


    dein dropdown ist "fehlerhaft", 1. musst du direkt schon nen standardwert setzen das man nicht pflichtweise das dropdown drücken muss (damit der $_POST erstmal gesetzt wird!)

    dann ist das so: deni $filename wird zwar gesetzt.. aber nach dem speichern ist dein $_POST['dateiname'] wieder weg.

    Debuggst du ganz gut in dem man nach dem klick auf "öffnen" den dateinamen hat, dann auf speichern klickt und er weg ist
     
  9. 5. September 2010
    AW: Variablenproblem

    hab ich eingebaut ... könnt ihr euch anschauen
     
  10. 5. September 2010
    AW: Variablenproblem

    *push* falls dus nicht gesehen hast, hab n edit reingehauen


    lösungsansätze wären entweder ein <input type="hidden" value="<?php echo $_POST['dateiname']; ?>" /> oder wahlweise deine cookies / ne session nutzen
     
  11. 5. September 2010
    AW: Variablenproblem

    sitz grad auf der leitung ... wo sollte das input denn hin
     
  12. 5. September 2010
    AW: Variablenproblem

    $username ist trotzdem nicht definiert ...

    der fehler war btw folgender: du hast zwei formulare und nachm speichern ist $_POST['seite'] nicht mehr definiert gewesen

    PHP:
    <? php

    $geheim_wort 
    'geheim' ;
    $username     '' ;

    if(!empty(
    $_COOKIE [ 'login' ])) {
        list(
    $c_username $cookie_hash ) =  split ( ',' $_COOKIE [ 'login' ]);
        if(
    md5 ( $c_username . $geheim_wort ) ==  $cookie_hash )
            
    $username  $c_username ;
    }

    // zum testen ;) $username = 'hans';

    if( $username  ==  '' ) {
        
    header ( 'Location: login.php' );
        exit;
    }

    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
        <head>
            <title>Contents bearbeiten</title>

            <meta http-equiv="content-type" content="text/html; charset=utf-8"/>

            <script type="text/javascript" src="/tiny_mce/tiny_mce.js"></script>

            <link type="text/css" href="style.css" rel="stylesheet" media="screen" />

            <script type="text/javascript">
                tinyMCE.init({
                    mode : "textareas",
                    elements : "full_text",
                    theme : "advanced",
                    skin : "default",
                    plugins: "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras",
                    
                    theme_advanced_buttons1 : "save,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
                    theme_advanced_buttons2 :"cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
                    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
                    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
                    theme_advanced_toolbar_location : "top",
                    theme_advanced_toolbar_align : "center",
                    theme_advanced_statusbar_location : "bottom",
                    theme_advanced_resizing : false,
                    

                });
            </script>
        </head>
        <body>
            <p id="loggedin">
                Guten Tag <?php  echo  $username ?><br>
                <button type="button" onclick="window.location.href= 'logout.php';">Ausloggen</button>
            </p>
            
            <div id="bearbeitung">
                <form method="post" action="edit.php">
                    <p>    
                        <select name="seite" style="background:transparent; border: thin solid; border-color: #182B63;">
                          <option value="home.php" id="home.php">Home</option>
                          <option value="news.php" id="news.php">News</option>
                        </select>
                        <input type="submit" value="&Ouml;ffnen" />
                    </p>
                </form>

                <?php  if(!empty( $_POST [ 'seite' ])):  ?>
                    <?php
                        $filename 
    $_POST [ 'seite' ];
                        
    // steuerzeichen entfernen
                        
    $filename  strtr ( $filename array_combine ( array_map ( 'chr' range ( 0 31 )),  array_fill ( 0 31 '' )));
                        
                        print 
    '<h4>'  $filename  '</h4>' ;
                        
                        if(
    file_exists ( $filename ) &&  is_file ( $filename )):
                        
                            if(isset(
    $_POST [ 'save' ])) {
                                
    $content  $_POST [ 'content' ];
                                
                                if(
    function_exists ( 'get_magic_quotes_gpc' ) &&  get_magic_quotes_gpc ())
                                    
    $content  stripslashes ( $content );
                                    
                                
    #$content = preg_replace('/\<(?:script|\?(?!xml))/', '', $content);
                                
                                
    file_put_contents ( $filename $content );
                                print 
    '<p>Erfolgreich gespeichert!</p>' ;
                            }
                    
    ?>
                        <form method="post" action="edit.php">
                            <input type="hidden" name="seite" value="<?php  print  $filename ?>" />
                            <p>    
                                <textarea name="content" cols="100" rows="45"><?php  print  htmlentities ( file_get_contents ( $filename ));  ?></textarea>
                                <input type="submit" value="Speichern" name="save" />
                            </p>
                        </form>
                    <?php  else:  ?>
                        <p>Datei nicht gefunden!</p>
                    <?php  endif;  ?>
                <?php  endif;  ?>
            </div>
        </body>
    </html>
     
  13. 5. September 2010
    AW: Variablenproblem

    ook es geht jetzt soweit ... nur der gespeicherte text wird ohne formatierungen usw gespeicher ... wieso? kein farbe etc ... wenn ich dann wieder öffne nach speichern


    edit: habe jetzt herausgefunden, dass es daran liegt, das der editor immer \ vor " einfügt und es danach beim erneuten laden nicht anzeigen kann.

    wie kann ich die \ filtern?


    edit2: lösung gefunden

    $filename = $_POST['seite'];
    if(isset($_POST['save'])) {
    $search = "\\";
    $replace = "";
    $file = $_POST['page'];
    echo $file;
    $content = $_POST['content'];
    $content = str_replace($search, $replace, $content);
    file_put_contents($file, $content);
    }
     
  14. 5. September 2010
    AW: Variablenproblem

    stripslashes() wie in meinem code hatte nicht funktioniert?

    ich will garnicht wissen was du dir da zusammengeschustert hast ...

    [X] erledigt

    closed
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.