【发布时间】:2015-11-01 13:00:56
【问题描述】:
目标:我正在创建一个php登录脚本。
问题:我似乎无法让我的包含识别 $connection 变量,即使它应该在 connection.php 中明确定义。结果我的变量的值是空的/NULL。
我尝试了什么:我从 mysql 开始,但很快发现这是错误的方法,并将我的代码转换为 mysqli。我检查了我拥有的所有 $connection 变量中的拼写错误。我确保路径是正确的。作为最后的手段,我进行了谷歌搜索,但没有找到答案或任何有用的提示。
问题:我的变量没有被定义的原因是什么?
错误信息:
所有这些消息都与这个单一变量有关,由于某种原因没有被定义:
Php 注意:未定义变量:C:\xampp\htdocs\aspie\Php\Core\Common.php 中的连接第 4 行
Php 警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,在第 4 行的 C:\xampp\htdocs\aspie\Php\Core\Common.php 中给出 null
Php 注意:未定义变量:C:\xampp\htdocs\aspie\Php\Core\Functions\Members.php 中的连接第 4 行
Php 警告:mysqli_query() 期望参数 1 为 mysqli,在第 4 行的 C:\xampp\htdocs\aspie\Php\Core\Functions\Members.php 中给出 null
Php 警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 5 行的 C:\xampp\htdocs\aspie\Php\Core\Functions\Members.php 中给出 null
// 初始化器
<?php
session_start();
// error_reporting(NULL);
include 'Connection.php';
include 'Common.php';
include 'Functions/Members.php';
?>
**// 错误消息**
<?php
$connection_error = 'Our website is experiencing technical issues, please come back later.';
$wrong_login = 'Password and name are wrong.';
$member_registered = 'Access has been denied. You do not seem to be a registered user.';
?>
**// 连接**
<?php
include 'Errors.php';
$connection = mysqli_connect('localhost', 'root', '', 'project') or exit ($connection_error);
?>
**// 普通**
<?php
error_reporting();
function sanitize($connection, $data) {
global $connection;
global $data;
return mysqli_real_escape_string($connection, $data);
}
?>
**// 成员**
<?php
function member_registered($connection, $name) {
$name = sanitize($connection, $name);
$query = mysqli_query($connection, "SELECT COUNT(`id`) FROM `members` WHERE `name` = '$name'");
return (mysqli_num_rows($query) == 1) ? true : false;
}
?>
**// 登录 **
<?php
include 'Php/Core/Initializer.php';
if (member_registered($connection, 'ee')) {
echo "exists";
}
die("eee");
echo error_reporting();
if (empty($_POST) == false) {
$name = $_POST['name'];
$password = $_POST['name'];
if (empty($name) OR empty($password)) {
echo $wrong_login;
}
else if (member_registered($connection, $name) == false) {
echo $member_registered;
}
}
?>
更新:
现在我得到的是:existseee;
即使设置正确,条件现在也不起作用。用户名不存在,所以它不应该回显“存在:
if (member_registered($connection, 'ee')) {
echo "exists";
}
die("eee");
【问题讨论】:
-
变量已定义,但在函数范围内看不到
-
$connection在函数范围内不可用。将其作为参数传递function member_registered($connection,$name) {,然后将连接添加到调用if (member_registered($connection,'ee')) { -
函数中的所有变量都在不同的范围内。您需要将变量作为参数传递或在函数中将其设置为全局
function ...() { global $connection; [...more code]。
标签: php