所以我有一个定义文件位置的变量,但在该变量中我必须将文本与另一个var组合。这是我提出的代码:
$id = $_GET["id"];
$file = "../posts/$id.txt";
但该代码只会找到名为.txt
感谢任何帮助
更新
网址为example.com/edit.php?id=0
更新
<?php session_start();
$id = $_GET["id"];
$_SESSION["postId"] = $id;
if (!isset($_SESSION["loggedin"])) {
header("location: ../index.php");
}
function Read() {
$id = $_SESSION["postId"];
$file = "../posts/$id.txt";
echo file_get_contents( $file);
}
function Write() {
$id = $_SESSION["postId"];
$file = "../posts/$id.txt";
echo $file;
$fp = fopen($file, "w");
$data = $_POST["tekst"];
fwrite($fp, $data);
fclose($fp);
}
?>
<?php
if ($_POST["submit_check"]){
Write();
};
if ($_POST["submit_check"]){
echo '<div class="info">Text updated</div>';
};
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<textarea rows="30" cols="200" name="tekst" id="alltext"><?php Read(); ?></textarea><br>
<input type="submit" name="submit" value="Update text">
<input type="hidden" name="submit_check" value="1">
</form>
答案 0 :(得分:0)
如果您想要任何文件名,只需:
$filename = $_GET["filename"];
$file = '../posts/'.$filename;
但是,请注意黑客正在做像
这样的时髦的事情$_GET["filename"]="../../../../etc/passwd\x00";
)
另外,我建议改变
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
到
<form action="?" method="post">
答案 1 :(得分:0)
尝试更改您的表单操作:
<form action="<?php echo $_SERVER['PHP_SELF'].'?'.http_build_query($_GET) ?>" method="post">
答案 2 :(得分:0)
所以问题是表单重定向到自身,但是它会丢失它的参数,所以我改变了表单操作:
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
对此:
<form action="/users/edit.php?id=<? echo($id); ?>" method="post">
答案 3 :(得分:0)
嗯,有一个众所周知的方法来处理涉及登录和会话的重定向。而不是尝试从 $ _ SESSION 多次写入/检索我只是重定向到另一个页面(登录本例中的.php或index.php),带有当前URL的查询字符串(您想要返回的位置)。 像这样的东西:
<?php // example.com/edit.php?id=0
if ($_SESSION["loggedin"]) {
# REQUEST_URI: URL + query string
header('Location: login.php?next=' . $_SERVER['REQUEST_URI']);
}
# moving $_GET here
$id = $_GET["id"];
$filename = sprintf('../posts/%s.txt');
function Read($filename) {}
function Read($filename) {}
//...
另一页(login.php可能?):
<?php //index.php, login.php (whatever)
# do login, checks...
$redirect_back = $_GET['next']; # sanitize???
header('Location: ' . $redirect_back );
我认为这种方式是务实的。