【问题标题】:Send variable value to .txt file through .php通过 .php 将变量值发送到 .txt 文件
【发布时间】:2015-06-07 13:56:36
【问题描述】:

我有一个带有变量的脚本,我将这个变量传递给 .php 脚本,然后从 .php 脚本传递给 .txt 文件,然后该文件存储变量中的数值,唯一的问题是当我通过将变量传递给 .txt 文件,而不是传递变量的编号,而是传递变量的名称。

这是我的脚本:

php:

    <?php 

    $variableToPass= $_POST['variableToPass']; 

    $filename = "textFilePass.txt";
    $content = file_get_contents($filename);
    $content .= $variableToPass. PHP_EOL;
    file_put_contents($filename, $content);


?>

html:

<form id="payment-form" action="chargeCard.php" method="POST" name="payment-form">
<input type="text" name="amount" id="amount" />
<input type="hidden" id="variableToPass" name="variableToPass" value="variableToPass"/> 
<input type="image"  src="butImg.png" id="Button" value="but" alt="but"/>
</form>

<script type="text/javascript"> 

var variableToPass= 1;

document.getElementById("variableToPass").innerHTML = variableToPass;
document.getElementByID("variableToPass").value = variableToPass;

</script>

【问题讨论】:

  • 输入的值为variableToPass,而javascript中的错误永远不会改变它,所以这是发送到PHP脚本的内容,而不是1
  • developer.mozilla.org/en-US/docs/Web/API/Document/… "id 是一个区分大小写的字符串,表示正在查找的元素的唯一 ID。" - getElementById 也是如此。 getElementByIdgetElementByID 完全是两种不同的动物。
  • 那么基本上我这样就不能得到变量的值了?
  • 尝试从您的输入中删除value="variableToPass"

标签: javascript php html variables numbers


【解决方案1】:

"这是因为我想保存变量以便能够将其显示给网站上的所有用户,所以我有默认值 1,然后我有一个文本输入,它只允许变量+1的数字,所以假设默认值为1,然后我将2放入输入中,然后.php文件将获得2的输入并将其保存到.txt文件中,之后javascript中的变量会在.txt文件中获取这个变量,并将新的值转化为变量。有点复杂,但基本上只是为所有用户保存变量,而不是本地保存。”

好的,我很清楚你想在这里做什么。

重要的旁注:请仔细完整地阅读我的回答;我可能没有完全掌握您想要在这里实现的目标,所以我的回答中有两个选项。

这是你需要做的:

首先使用is_numeric()检查输入是否为数字。

然后分配变量并将POST数量与$_POST['variableToPass']数组相加。

PHP

<?php 

if(isset($_POST['amount']) && is_numeric($_POST['amount']) ){

    $amount = $_POST['amount'];

}

else{
echo "It is not numeric. Please click back and enter an integer.";
exit;
}

$variableToPass1 = $_POST['variableToPass'];

$variableToPass = $variableToPass1 + $amount;

    $filename = "textFilePass.txt"; // make sure this file exists before executing
    $content = file_get_contents($filename);
    $content .= $variableToPass. PHP_EOL;
    file_put_contents($filename, $content);

HTML 表单

<form id="payment-form" action="chargeCard.php" method="POST" name="payment-form">
<input type="text" name="amount" id="amount" />
<input type="hidden" id="variableToPass" name="variableToPass" value="variableToPass"/> 
<input type="submit" name="submit" value="Submit"/>
</form>

<script type="text/javascript"> 

var variableToPass= 1;

document.getElementById("variableToPass").innerHTML = variableToPass;
document.getElementById("variableToPass").value = variableToPass;

</script>

但是,使用此方法将继续添加/附加到文件。如果这不是您想要的结果,您需要删除以下点:

$content .= $variableToPass. PHP_EOL;
         ^

读作:

$content = $variableToPass. PHP_EOL;

另外,如前所述;这一行:

document.getElementByID("variableToPass").value = variableToPass;

应该读作:

document.getElementById("variableToPass").value = variableToPass;
  • getElementById 区分大小写。

选项 2 使用“金额”输入中的数字写入文件。

这将写入输入中的任何数字并将其写入文件,而不是附加到它。

如果没有插入数字并且仅通过单击提交按钮,将写入您在var variableToPass= 1;中定义的数字

<?php 

if(isset($_POST['amount']) && is_numeric($_POST['amount']) ){

    $variableToPass  = $_POST['amount'];

}

else{

    $variableToPass = $_POST['variableToPass'];

}

    $filename = "textFilePass.txt";
    $content = file_get_contents($filename);

    $content = $variableToPass. PHP_EOL;

    file_put_contents($filename, $content);

脚注:

  • 如果您对此有任何疑问,或者我可能没有完全理解;告诉我。

【讨论】:

  • 我已经想出了解决问题的方法,但是非常感谢您的回答,它帮助了我。
【解决方案2】:

试试这个:

$var_str = var_export($text, true);
$var = "<?php\n\n\$$text = $var_str;\n\n?>";
file_put_contents('filename.php', $var);

【讨论】:

  • 他不想把那个值放在他询问 .txt 文件的 php 脚本上,你为什么要把 &lt;?php\n\n\$$text = $var_str;\n\n?&gt; 脚本写入文件? ;) :p
【解决方案3】:
<input type="hidden" id="variableToPass" name="variableToPass" value="variableToPass"/> 

这将始终发送值 (value="variableToPass") 尝试将其更改为 (value="1") 这应该返回 1

【讨论】:

  • 谢谢你的回答,唯一的问题是这个变量的值会随着时间的推移而改变,所以它不能只是设置为1,它必须是发送的变量或里面的金额在给定的时间变量。
  • 你从哪里获得价值?
  • 这是因为我想保存变量以便能够将其显示给网站上的所有用户,所以为此我有默认值 1,然后我有一个文本输入,它只允许作为变量 + 1 的数字,所以假设默认值为 1,然后我将 2 放入输入中,然后 .php 文件将获得 2 的输入并将其保存到 .txt 文件中,之后javascript中的变量将在.txt文件中获取这个变量,并将新值转换为变量。有点复杂,但基本上只是为所有用户而不是本地保存变量。
  • 好吧,你需要像上面提到的那样将 getElementByID("variableToPass") 更改为 getElementById("variableToPass") 并像这样将值设置为空
  • 您将始终获得 var variableToPass= 1; 中的值请记住,您已经对变量进行了硬编码。
【解决方案4】:

这里有错别字:

document.getElementByID("variableToPass").value = variableToPass;
                      ^

改成:

document.getElementById("variableToPass").value = variableToPass;

该值不会改变并保持默认值,即variableToPass,与 PHP 变量名一致。

除了你不需要改变 innerHTML - 它是输入,它有它的价值。

【讨论】:

  • Answer 和 cmets 都被 OP 完全忽略了,tsk tsk
  • 它们并没有被忽略,我只是在测试它们,然后留下回应。
  • 我已经修正了错字,html 值的最后一个“get”行是显示变量,忽略它。但是有没有办法像我做的那样,但获取值编号而不是变量名?
  • 是的,所有这些都是为了获得这个号码。您可以将 1 作为默认值,但无论如何它都会立即被 javascript 覆盖。
猜你喜欢
  • 1970-01-01
  • 2019-07-23
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 2017-03-14
  • 1970-01-01
  • 2014-02-08
  • 2014-02-07
相关资源
最近更新 更多