这是我的login.php
代码require_once 'connect.inc.php';
require_once 'core.inc.php';
if(isset($_POST['username']) && isset($_POST['password'])){
$username=$_POST['username'];
$password=$_POST['password'];
$password_hash=md5($password);
if(!empty($username) && !empty($password)){
$query="SELECT `id` FROM `login` WHERE `username`='$username' AND `password`='$password_hash'";
if($query_run = mysqli_query($stat,$query)){
$query_num_rows = mysqli_num_rows($query_run);
if($query_num_rows == 0){
echo 'You have entered wrong username or password !';
}
else if($query_num_rows == 1){
function mysqli_result($res, $row, $field) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return $datarow[$field];
}
$user_id= mysqli_result($query_run, 0,'id');
$_SESSION['user_id'] = $user_id;
header('Location: index.php');
}
}
else
{
echo 'You have entered wrong username or password !';
}
}else {
echo 'You must have to enter username and password';
}
}
<form action="<?php echo $server; ?>" method="POST">
Username:
<input type="text" placeholder="Enter the userid" name="username">
Password:
<input type="password" placeholder="Enter your password" name="password">
<input type="submit" value="Log in">
这是index.php的代码
require_once 'core.inc.php';
require_once 'connect.inc.php';
if(get_status()){
$firstname=getinfo('firstname');
$lastname=getinfo('lastname');
echo 'You are logged in ,'.$firstname.' '.$lastname.'';
echo "<br><a href='logout.php'>Logout</a><br>";
}
else {
include_once 'login.php';
}
以下是core.inc.php的代码
session_start();
ob_start();
$server =$_SERVER['SCRIPT_NAME'];
@$ref_url=$_SERVER['HTTP_REFERER'];
function get_status(){
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){
return true;
}
else
return false;
}
function getinfo($field){
$get_query="SELECT `$field` FROM `login` WHERE `id`='".$_SESSION['user_id']."'";
require 'connect.inc.php';
if($query_run=mysqli_query($stat,$get_query)){
function mysqli_result($res, $row, $f) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return $datarow[$f];
}
if($query_result=mysqli_result($query_run,0,$field)){
return $query_result;
}
}
}
当我使用$lastname=getinfo('lastname'); after using $firstname=getinfo('firstname');
时,在上面的代码中(在index.php中)。它给了我以下错误。
Fatal error: Cannot redeclare mysqli_result() (previously declared in C:\xampp\htdocs\good\core.inc.php:18) in C:\xampp\htdocs\good\core.inc.php on line 18
请有人帮助我。我是第一次学习这门语言。
答案 0 :(得分:2)
在函数mysqli_result
之外定义函数getinfo
。然后从getinfo
调用它。
由于您已在getinfo
内定义了该函数,因此mysqli_result
的函数定义将在第一次调用getinfo
时执行。当您第二次致电getinfo
时,mysqli_result
的功能定义将再次执行。但它已经定义了,你会得到那个错误。
答案 1 :(得分:0)
我猜你有javascript开发背景。
但是在php中我们以不同的方式声明函数。
例如,你的core.php应该是:
session_start();
ob_start();
$server =$_SERVER['SCRIPT_NAME'];
@$ref_url=$_SERVER['HTTP_REFERER'];
function get_status(){
if(isset($_SESSION['user_id']) && !empty($_SESSION['user_id'])){
return true;
}
else
return false;
}
function mysqli_result($res, $row, $f) {
$res->data_seek($row);
$datarow = $res->fetch_array();
return is_array($datarow)?$datarow[$f]:false;
}
function getinfo($field){
$get_query="SELECT `$field` FROM `login` WHERE `id`='".$_SESSION['user_id']."'";
require 'connect.inc.php';
if($query_run=mysqli_query($stat,$get_query)){
if($query_result=mysqli_result($query_run,0,$field)){
return $query_result;
}
}
}
现在我们知道我们在mysqli_result
core.php
函数进行了谴责
所以如果任何php文件require_once 'core.inc.php';
我们不需要重新声明这个函数。在index.php
的情况下,您拨打include_once 'login.php';
并在login.php
中尝试重新声明mysqli_result
,这是多余的。因此,您的login.php
片段可以转换为:
else if($query_num_rows == 1){
$user_id= mysqli_result($query_run, 0,'id');
$_SESSION['user_id'] = $user_id;
header('Location: index.php');
}
我猜你刚才是php的初学者,其他开发者可以提供一些其他的建议。但我的答案只是你的问题,为什么你有一个错误
Cannot redeclare mysqli_result()
。
答案 2 :(得分:0)
为了所有的善良,请使用PDO
$query = "SELECT id FROM login WHERE username=? AND password=?";
$stmt = $pdo->prepare($query);
$stmt->execute([$username, $password]);
$user_id = $stmt->fetchColumn();
if($user_id) {
$_SESSION['user_id'] = $user_id;
header('Location: index.php');
exit;
} else {
echo 'You have entered wrong username or password !';
}
:此。是。全部。您需要的代码。这几行而不是你所有的那些可怕的混乱,试图重新动画一个死的mysql_result函数。