php变量在另一个变量中';s值

php变量在另一个变量中';s值,php,Php,因此,我有一个定义文件位置的变量,但在该变量中,我必须将文本与另一个变量相结合。下面是我提出的代码: $id = $_GET["id"]; $file = "../posts/$id.txt"; 但该代码只能找到名为.txt 谢谢你的帮助 更新 <?php session_start(); $id = $_GET["id"]; $_SESSION["postId"] = $id; if (!isset($_SESSION["loggedin"])) { header(

因此,我有一个定义文件位置的变量,但在该变量中,我必须将文本与另一个变量相结合。下面是我提出的代码:

$id = $_GET["id"];
$file = "../posts/$id.txt";
但该代码只能找到名为
.txt

谢谢你的帮助

更新

  <?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>
url是
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>


如果需要任何文件名,只需执行以下操作:

$filename = $_GET["filename"];
$file = '../posts/'.$filename;
然而,要注意黑客们正在做一些古怪的事情,比如

$_GET["filename"]="../../../../etc/passwd\x00"; 
)()

另外,我建议换一个

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

如果需要任何文件名,只需:

$filename = $_GET["filename"];
$file = '../posts/'.$filename;
然而,要注意黑客们正在做一些古怪的事情,比如

$_GET["filename"]="../../../../etc/passwd\x00"; 
)()

另外,我建议换一个

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

尝试如下更改表单操作:

<form action="<?php echo $_SERVER['PHP_SELF'].'?'.http_build_query($_GET) ?>" method="post">
<?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) {}

//...

尝试如下更改表单操作:

<form action="<?php echo $_SERVER['PHP_SELF'].'?'.http_build_query($_GET) ?>" method="post">
<?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) {}

//...

问题是表单正在重定向到自身,但随后它将丢失其参数,因此我更改了表单操作:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

问题是表单正在重定向到自身,但随后它将丢失其参数,因此我更改了表单操作:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">

好的,有一种众所周知的方法来处理涉及登录和会话的重定向。我不想从$\u SESSION多次尝试写入/检索,而只想用当前URL的查询字符串重定向到另一个页面(本例中为login.php或index.php)(这是您想要返回的位置)。
大概是这样的:

<form action="<?php echo $_SERVER['PHP_SELF'].'?'.http_build_query($_GET) ?>" method="post">
<?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) {}

//...

好的,有一种众所周知的方法来处理涉及登录和会话的重定向。我不想从$\u SESSION多次尝试写入/检索,而只想用当前URL的查询字符串重定向到另一个页面(本例中为login.php或index.php)(这是您想要返回的位置)。
大概是这样的:

<form action="<?php echo $_SERVER['PHP_SELF'].'?'.http_build_query($_GET) ?>" method="post">
<?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) {}

//...

基本调试:
var\u dump($\u GET)
。你只是假设'id'参数。如果未使用
http://example.com?id=foo
,那么就不会了……是的,url是从上一页传递过来的,在这种情况下id是0。如果设置了,那么您将得到
。/posts/0.txt
。既然你不是,那就不是。。。您需要开始调试。
example.com/edit.php?=0
example.com/edit.php?id=0
不一样,肯定还有其他原因。从表面上看,上面的代码是有效的。基本调试:
var\u dump($\u GET)
。你只是假设'id'参数。如果未使用
http://example.com?id=foo
,那么就不会了……是的,url是从上一页传递过来的,在这种情况下id是0。如果设置了,那么您将得到
。/posts/0.txt
。既然你不是,那就不是。。。您需要开始调试。
example.com/edit.php?=0
example.com/edit.php?id=0
不一样,肯定还有其他原因。从表面上看,上述代码是有效的。