2010-12-11 57 views
0

J'ai le script suivant pour demander un mot de passe, puis demander à l'utilisateur s'il souhaite modifier une page. Cliquez sur une page l'ouvre dans le '<textarea>', le bouton de sauvegarde devrait alors envoyer à nouveau le contenu de la zone de texte au script pour l'écriture. (Je suis conscient que ce n'est pas le moyen le plus sûr de s'authentifier, s'il y a un moyen de le faire sans SQL, je voudrais l'entendre.)

Le problème est que le contenu de la zone de texte n'est pas t étant transmis à la fonction updateFile().

<? 
session_start(); 
$pass = 'generic_password'; 
$login ='<form action="?page=admin" method="post"> 
     Password: <input type="password" name="pass" /> 
     <input type="submit" /> 
     </form>'; 
function updateFile($file){ 
    $area=$_POST['area']; 
    $fd=fopen($file,"w"); 
    fwrite($fd,$area); 
    fclose($fd); 
    echo $file.' has been saved'; 
    } 
if (!isset($_POST['pass']) && $_SESSION['authed'] == false){ 
    echo $login; 
    $_SESSION['authed'] = false; 
    } 
elseif ($_POST['pass'] == $pass || $_SESSION['authed'] == true){ 
    $_SESSION['authed'] = true; 

    if(isset($_POST['submit'])){ 
     updateFile($_POST['file']); 
    } 

    echo "Select a page to edit<br/>"; 
    echo "<ul>"; 
    foreach (glob("{*.html,*.css}",GLOB_BRACE) as $x){ 
     echo "<li> <a href=\"?page=admin&edit=$x\">$x </a></li>"; 
    } 
    echo "</ul>"; 
    if (isset($_GET['edit'])){ 
     echo '<script type="text/javascript" src="nicEdit.js"></script> 
       <script type="text/javascript"> 
       bkLib.onDomLoaded(function() { nicEditors.allTextAreas() }); 
       </script> '; 
     echo '<form method="post" action="?page=admin">You are editing: <a name="file">'.$_GET['edit'].'</a> <textarea name="area" style="width:920px;">'; 
     include $_GET['edit']; 
     echo '</textarea> 
       <input name="submit" value="Save" type="submit" /> 
       </form>'; 
    } 
} 
else 
    echo "something went wrong"; 

?> 
+1

ce que dit var_dump ($ _ POST)? L'index 'area' défini mais vide ou non défini? –

+1

Votre habitude de mettre la bride bouclée de fermeture au même niveau avec le bloc imbriqué est sacrément affreux –

+0

@Shrapnel, comment proposez-vous que je arrange les accolades? –

Répondre

1
<input name="submit" value="Save" type="submit" /> 

ci-dessus ne converti en $_POST['submit']

+0

J'ai utilisé '' –

0

Rien n'est passé dans la fonction updateFile. Je doute que vous êtes en mesure d'ouvrir le fichier

Il est un élément <a> avec le nom file qui ne seront pas disponibles dans $_POST

if(isset($_POST['submit'])){ 
    updateFile($_POST['file']); 
} 
0

Probablement Vous avez tort ici:

if(isset($_POST['submit'])){ 
    updateFile($_POST['file']); 
} 

Ici vous retirez un fichier d'entrée. où dans votre formulaire il n'y a pas un tel champ existe, seulement une balise d'ancrage est là avec un tel nom et $ _POST ne peut pas enlever les données à l'intérieur d'une balise d'ancrage. Donc, il vaut mieux garder un champ pour le nom de fichier séparément,

Espérons que cela aide.