在页面加载时自动调用PHP SELF

时间:2015-08-18 17:12:33

标签: php html file server

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST")
    {
        $fn=$_POST["filename"];
        $content=$_POST["txt"];
        $fp= fopen("abc.txt", "w") or die("unable to open file");
        fclose($fp);
    }
?>
<html>
<head>
    <title>Files</title>
</head>
<body>
    <center>
    <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" id="show">
        <input type="text" name="filename" placeholder="File Name"><br>
        <textarea name="txt" id="txtarea" id="txtarea" rows="20" cols="50" placeholder="Text goes here..."></textarea><br>
        <input id="ixtbtn" type="submit" id="tabuttton" value="Done">
    </form>
    </center>
</body>
</html>

Php会在页面加载时自动调用。但是我需要在按下提交按钮时调用它。

2 个答案:

答案 0 :(得分:0)

<?php
    if (isset($_POST['submitted']))
    {
        $fn=$_POST["filename"];
        $content=$_POST["txt"];
        $fp= fopen("abc.txt", "w") or die("unable to open file");
        fclose($fp);
    }
?>
<html>
<head>
    <title>Files</title>
</head>
<body>
    <center>
    <?php echo "<form action='" . htmlspecialchars(#_SERVER['PHP_SELF']) . "' method='post' id='show'>"; ?>
        <input type="text" name="filename" placeholder="File Name"><br>
        <textarea name="txt" id="txtarea" id="txtarea" rows="20" cols="50" placeholder="Text goes here..."></textarea><br>
        <input id="ixtbtn" type="submit" id="tabuttton" value="Done" name='submitted'>
    </form>
    </center>
</body>
</html>

答案 1 :(得分:0)

稍微使用了你的代码并注意到两件事:(1)你的语句在你的php代码块和直接html之外。 (2)在我的系统(OSX上的Firefox或Safari)上,这意味着php $ _SERVER ['PHP_SELF']从未被转换回php,它被视为文本,post命令不断发布到服务器上寻找URL从php开始如果我在php中使用echo输出你的HTML,变量($ _SERVER)不会被替换并以直文形式输入。所以我首先将你的html放入一个字符串变量来翻译变量,然后回显你的html。将文件保存为PHP文件而不是html文件,您的代码工作得很好。所以,四个净变化。

  1. 将结束的php语句(?&gt;)移动到文件的末尾
  2. 将HTML复制到php字符串

    $outputString = "";
    $outputString = $outputString.'<!DOCTYPE html>';
    $outputString = $outputString.'<html><head><meta charset="utf-8"><title>Files</title>';
    $outputString = $outputString.'</head><body><center>';
    $outputString = $outputString.'<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="show">';
    $outputString = $outputString.'<input type="text" name="filename" placeholder="File Name"><br>';
    $outputString = $outputString.'<textarea name="txt" id="txtarea" id="txtarea" rows="20" cols="50" placeholder="Text goes here..."></textarea><br>';
    $outputString = $outputString.'<input id="ixtbtn" type="submit" id="tabuttton" name="myButton" value="Done">';
    $outputString = $outputString.'</form></center></body></html>';
    
  3. 回应字符串
  4. 另存为.php而不是.html