【发布时间】:2019-01-27 18:56:00
【问题描述】:
我有一个奇怪的问题。我将数据库连接插入到一个单独的 .php 文件中。如果我现在将此 php 文件作为包含插入,则该函数将不再执行(在本例中为寄存器)。有趣的是,在 login.php 中,他接管了它并且它可以工作。此外,如果我将 dbconnection.php 的内容添加到 register.php 文件,它就可以工作。只有include命令不起作用。
代码如下:
dbconnection.php:
$db = new mysqli('xxx', 'xxx', 'xxx', 'xx');
if($db->connect_error):
echo $db->connect_error;
endif;
正在运行的login.php:
<?php
include ('dbconnection.php');
if(isset($_POST['absenden'])):
$benutzername = strtolower($_POST['benutzername']);
$passwort = $_POST['passwort'];
$passwort = md5($passwort);
$search_user = $db->prepare("SELECT id FROM users WHERE benutzername = ? AND passwort = ?");
$search_user->bind_param('ss',$benutzername,$passwort);
$search_user->execute();
$search_result = $search_user->get_result();
if($search_result->num_rows == 1):
$search_object = $search_result->fetch_object();
$_SESSION['user'] = $search_object->id;
header('Location: '.$_SERVER['PHP_SELF']);
else:
echo 'Deine Angaben sind leider nicht korrekt!';
endif;
endif;
register.php 不工作(白屏,如果我将 dbconnection.php 的内容(不包含)添加到 register.php,它可以工作。):
<?php
include ('dbconnection.php');
$benutzername = $_POST['benutzername'];
$passwort = $_POST['passwort'];
$passwort_widerholen = $_POST['passwort_widerholen'];
$search_user = $db->prepare("SELECT id FROM users WHERE benutzername = ?");
$search_user->bind_param('s',$benutzername);
$search_user->execute();
$search_result = $search_user->get_result();
if($search_result->num_rows == 0):
if($passwort == $passwort_widerholen):
$passwort = md5($passwort);
$insert = $db->prepare("INSERT INTO users (benutzername,passwort) VALUES (?,?)");
$insert->bind_param('ss',$benutzername,$passwort);
$insert->execute();
if($insert !== false):
echo 'Dein Account wurde Erfolgreich erstellt! <a href="index.php?page=anmelden">HIER</a> kannst du dich anmelden.';
endif;
else:
echo 'Deine Passwörter stimmen nicht überein!';
endif;
else:
echo 'Der Benutzername ist leider schon vergeben!';
endif;
endif;
【问题讨论】:
-
如果去掉
include后面的空格会怎样? -
对没有影响
-
不要使用
md5()来哈希密码,而是使用password_hash()/password_verify()。见stackoverflow.com/questions/30279321/how-to-use-password-hash -
您是否有错误报告 - 任何错误消息?
标签: php