0

我试图在同一个php文件中更新变量home的值,变量的值必须保存在同一个文件中,这可能吗?我怎样才能做到?

我已经尝试了一些技巧,但没有成功,希望有人已经解决了我遇到的同样问题。

<?php
$home = 'home';
?>
<form method="post" name="" action="" >
<label><?php echo $home;?></label>
<input type="text" name="nome" value="<?php echo $home;?>" />
<input type="submit" name="" value="Gravar" />
</form>
4

3 回答 3

0

不太确定您要达到的目标,但您可以使用 $_POST 或 $_GET 变量动态设置 $home 变量。

编辑:

要保存 $home 变量,您可以这样做:

<?php
if(!empty($_POST['home_variable'])){
    //save it
}

if(empty($_POST['home'])){
    $home = 'home';
} else {
    $home = $_POST['home'];
}

?>
<form method="post" action="<?php echo $ SERVER['PHP SELF']; ?>" >
<label><?php echo $home; ?></label>
<input type="text" name="home" value="<?php echo $home;?>" />
<input type="hidden" name="home_variable" value="<?php echo $home; ?>" />
<input type="submit" name="submit" value="Gravar" />
</form>
于 2013-11-06T19:16:31.873 回答
0

最简单的方法是使用 2 个文件:

set.php 和 take.php

set.php - 设置 $home 变量的文件

take.php 放置$home的文件,可以拿取

设置.php:

<form action="set.php" method="POST">
Home:<input type="text" name="home"><br>
<input type="submit">
</form>
<?php
if(isset($_POST['home'])){
$home=$_POST['home'];
$content= '<?php $home = "'.$home.'"; ?>';

    $file = "take.php";
    $fh = fopen($file, 'w') or die("can't open file");
    fwrite($fh, $content);
fclose($fh);
}
?>

该脚本从表单中获取值,并将其放在 take.php 文件中的变量中。take.php 文件的示例:

<?php $home = "nowhere"; ?>
于 2013-11-09T17:37:09.283 回答
0
<?php
if (isset($_POST['home'])) {

    $var = addcslashes(htmlentities($_POST['home']), "'");
    $fileContent = file_get_contents(__FILE__);
    $fileContent = preg_replace("/^(\\\$home ?= ?)'(.*)'(;[\n\r])/m", "$1'$var'$3", $fileContent);

    file_put_contents(__FILE__, $fileContent);
    // redirect to skip post in next refresh
    header("Location: {$_SERVER['REQUEST_URI']}");
    exit;
}

$home = 'home';

?>
<form method="post" name="" action="" >
<label><?php echo $home;?></label>
<input type="text" name="home" value="<?php echo $home;?>" />
<input type="submit" name="" value="Gravar" />
</form>
于 2013-11-06T20:05:17.650 回答