我有这个php函数从我的电脑上的文本文件中读取我的dbinfo:
function loaddb(){
$fh = fopen('dta.txt','r');
$line = fgets($fh);
$_SESSION['dbname']=$line;
$line = fgets($fh);
$_SESSION['dbuser']=$line;
$line = fgets($fh);
$_SESSION['dbpass']=$line;
$line = fgets($fh);
$_SESSION['server']=$line;
fclose($fh);
};
并且此代码有效。但当它将我的代码返回到我的会话var时,我看到它在实际变量中添加了额外的换行符,所以当我连接时的结果是
警告:mysql_connect():用户'root
的访问被拒绝'@'localhost'(使用密码:YES)in 第37行的C:\ Users \ Jacques \ Dropbox \ Jacques \ Web \ Code.php无法 connect:用户'root
的访问被拒绝'@'localhost'(使用密码:YES)
我该如何解决这个问题。我试过替换所有字符返回和空格但它没有帮助
这是我的文本文件中的文字
DBNAME
root
密码
本地主机:3306
答案 0 :(得分:1)
你这样检查过:
$_SESSION['dbname'] = trim($line);
答案 1 :(得分:1)
如果您确定空格位于字符串的每一端,则可以使用trim()
$_SESSION['dbname']= trim($line);
当您处理可能有多个空格的字符串时,您可以使用简单的正则表达式来解决这个问题:
$regex = '/(\s)\s+/'; // Select a whitespace and following whitespaces
$str = preg_replace($regex, '$1', $str); // Replace with the first whitespace
将数据库凭据保存在www文件夹中的文本文件中是一种非常糟糕的做法。如果有人碰巧找到了文件名,他就可以阅读你的凭证。
然后在发送到客户端之前解析PHP代码,因此客户端无法访问凭据(除非您回复它们)。
<强>的config.php 强>
<?php
define('DB_HOST', 'localhost:3306');
define('DB_NAME', 'dbname');
define('DB_USER', 'root');
define('DB_PASS', 'password');
然后,只要您需要数据库凭据:
require 'config.php';
// connect here
答案 2 :(得分:1)
使用trim()
:
$_SESSION['dbname']= trim($line);
来自文档:
“此函数返回一个字符串,其中从str的开头和结尾剥去了空格。没有第二个参数,trim()将删除这些字符:”