- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个 PHP 脚本,通过 $_POST
检索变量,并使用所述变量修改另一个 PHP 文件。但是,每当运行脚本时,要修改的文件的最后 12 个字符都会被复制并连接到文件末尾。
我尝试修改的文件名为database_info.php,如下所示;
<?php
/**
* These are the database login details
*/
define("HOST", "{HOST}"); // The host you want to connect to.
define("USER", "{USER}"); // The database username.
define("PASSWORD", "{PASSWORD}"); // The database password.
define("DATABASE", "{DATABASE}"); // The database name.
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
这是我修改database_info.php的PHP脚本
<?php
$host = $_POST['DBhost'];
$name = $_POST['DBname'];
$user = $_POST['DBuser'];
$pass = $_POST['DBpassword'];
echo "<p> Hostname: ", $host ,"</p></br>";
echo "<p> Database: ",$name, "</p></br>";
echo "<p> User: ", $user, "</p></br>";
echo "<p> User: ", $pass , "</p></br>";
$search = array('{HOST}','{USER}','{PASSWORD}','{DATABASE}');
$replace = array($host, $user, $pass, $name);
$file = file_get_contents("database_info.php");
$fh = fopen("database_info.php", 'c');
$file = str_replace($search, $replace, $file);
fwrite($fh, $file);
fclose($fh);
include 'functions.php';
$con = mysqli_connect(HOST, USER, PASSWORD, DATABASE); //create connection, store to variable "con"
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// Create a table
$sql="CREATE TABLE canvas(name CHAR(30),content CHAR(30))";
// Check if table was created
if (mysqli_query($con,$sql))
{
echo "Table created successfully";
}
else
{
echo "Error creating table: " . mysqli_error($con);
}
?>
当 PHP 脚本使用 $_POST
变量运行时
$host = localhost;
$name = CMS;
$user = root;
$pass = root;
database_info.php 更改为
<?php
/**
* These are the database login details
*/
define("HOST", "localhost"); // The host you want to connect to.
define("USER", "root"); // The database username.
define("PASSWORD", "root"); // The database password.
define("DATABASE", "CMS"); // The database name.
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);| E_STRICT);
问题出在最后一行,error_reporting(E_ALL | E_STRICT);| E_STRICT);
最后 12 个字符 (| E_STRICT);
) 已连接到末尾,导致语法错误。我可以通过在文件末尾添加 12 个额外的注释字符来解决该问题,这样它只复制注释字符,但这是一个不优雅的解决方案,并且不能解决问题。
我注意到添加到database_info.php的变量使其比原来的短了12个字符,这是问题所在吗?我认为问题源于 fwrite()
,但我不完全确定。有谁知道为什么我的脚本要添加这些额外的字符?
最佳答案
你的问题出在语句fopen()
如果您阅读了 fopen
的文档,您将使用参数 c
打开文件,这不会截断现有文件,而只是将文件指针放在文件开头。现在,由于您的 POST
值比您的 {..}
值短 12 个字符,因此它不会“覆盖”最后 12 个字符,而是用新字符串替换所有内容.
简单的解决方案是始终在 fopen
中使用 w
。所以
$fh = fopen("database_info.php", 'c');
$file = file_get_contents("database_info.php");
将成为
$file = file_get_contents("database_info.php");
$fh = fopen("database_info.php", 'w');
如果在打开文件进行写入后使用file_get_contents
,您将得到空文件来读取
关于PHP fwrite();创建额外的角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25030446/
我遇到一些 fwrite 问题,它以我不明白的方式失败。 在这段代码中,fwrite 都失败并给出 tmp = 0。 if ((file = fopen(filenameout, "wb")) !
好吧,事情是这样的……我记得上周创建了一个程序,要求我以二进制模式打开一个文件并向其中写入数据。首先,我尝试使用fopen函数,检查结果是否正确,然后尝试写入数据。我记得第一次尝试时,fwrite 操
早上好, 我正在尝试将以下结构的内容写入文件(更具体地说是 BMP 文件),并且想知道为什么 fwrite 的二进制输出ing 整个结构和 fwrite结构体的各个项目是不同的。这就是C的工作方式吗?
我在某个地方遇到了这个。 正在写入一个文件,然后rewind(fileptr) 完成,然后写入应该写入文件开头的内容。但是写在开头,不会覆盖文件的内容吗?请指教。 最佳答案 技术上,是 是的,文件将被
fwrite 一个整数取决于字节序,但是有没有一种方法可以将一个整数 0x00000004 写入一个文件,这样无论它运行在什么机器上,它都可以始终被读取为 0x00000004。 一个想法是始终按照特
我在 php 中编写一个函数,在客户端我有一个 Canvas 图像,我使用 toDataUrl() 和一个文件名将图像保存在服务器上。这是代码: 关键是这段代码有效。对于我在其上使用的三分之二的页面
当我运行这个小代码并在控制台上输入 3 个整数时,由于 fwrite 语句,它没有按应有的方式打印出来。只有在我连续按回车键一段时间后,它才会打印出来。帮助?P.S:学习速度比 scanf 和 pri
我的网站在 /var/www/html/hs/ ,我有我的更新.php .它应该写到/var/www/html/hs/json/myFile.json ,但事实并非如此。当我尝试写入 的同一目录时更新
这个函数应该获取一个参数作为文件的指针并将所有文件放入struct anagram ,然后将其写入另一个文件。现在每个数据之间都有很大的空间。 charCompare 工作正常,因为我制作了一个测试文
这是在我的网站上上传带有“var$”内容的“file.txt”的 URL: http://www.mywebsite.com/fwrite.php?stringData=var$&myFile=fil
如果字符串包含 ~,我似乎无法将其打印到标准输出。 > A = "/.git". > io:fwrite(A). /.gitok > B = "~/.git". > io:fwrite(B). **
我发现当我尝试写入一些大数据时 fwrite 失败,如下面的代码所示。 #include #include int main(int argc, char* argv[]) { int s
我正在写这个: $fh = fopen('public/newsletter.txt', 'w'); foreach($entries as $row) { fwrite($fh,
我又来了,这次有一个 PHP 问题...我正忙于制作某种管理面板(非常基本),但是当我试图像我的 slider 或其他东西一样进行更改时,fwrite 会覆盖所有内容。这是我的 PHP 代码: 0)
根据fwrite的手册页: fread() and fwrite() return the number of items successfully read or written (i.e., no
我只是想对一组数字进行排序(虽然我发布的代码不是我要使用的方法,但我确实需要将代码中的输出写入二进制文件). 一切正常,除了“ordenar”的最后一次迭代:当我在订购后再次打印回数字时,除了最后一行
我想使用 data.table::fwrite 以文本日志的形式快速存储和检索状态。这些是通过移动应用程序更新的,该应用程序使用管道工 API 调用到 R 端点。移动应用程序每秒可能会触发许多 API
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 5 年前。 Improve th
我正在尝试使用“fwrite”并制作 snd 文件。我想做 IIR 滤波器。我制作了一个 FIR 滤波器,并使用 IIR 滤波器的代码。(当然,改变系数)但我认为“fwrite”不起作用。因为IIR滤
我正在尝试将 wchar 数组写入 C 中的文件,但是存在某种损坏和不相关的数据,例如这样的变量和路径 c.:.\.p.r.o.g.r.a.m. .f.i.l.e.s.\.m.i.c.r.o.s.o.
我是一名优秀的程序员,十分优秀!