未调用PHP用户定义函数?
我有一个网页和一个会话检查文件,用于检查会话变量。我在需要的网页顶部添加了未调用PHP用户定义函数?,php,user-defined-functions,Php,User Defined Functions,我有一个网页和一个会话检查文件,用于检查会话变量。我在需要的网页顶部添加了require'session\u check.php'。我还使用了echo来检查session\u check.php文件是否被调用 我在session_check.php中有一个函数,该函数在注销时被调用,但从未被调用。你能帮我一下吗?谢谢:) session\u check.php的代码 在第一个之后的代码开头使用会话\u start()我编写了下面的代码。参考这些代码,您将得到解决方案。如果要使用require()
require'session\u check.php'
。我还使用了echo
来检查session\u check.php
文件是否被调用
我在session_check.php中有一个函数,该函数在注销时被调用,但从未被调用。你能帮我一下吗?谢谢:)
session\u check.php的代码
在第一个之后的代码开头使用会话\u start()
我编写了下面的代码。参考这些代码,您将得到解决方案。如果要使用require()方法从第一页调用第二页,只需在第一页调用require(secondpage url)并删除行会话\u start()在第二页
第一页(samplephp.php)
测试
第二页(session_check.php)
将session_start()设置为php代码中的第一行。但是,除非清理或参数化会话,否则您将面临SQL注入攻击inputs@OneManCrew那没用。@ozy你是说使用mysql\u escape\u字符串($\u SESSION['authkey'])代码>?我的意思是,您没有显示用于从用户处获取$uname的代码,但是从代码中可以明显看出,您没有使用准备好的语句。你在哪里用的。在session_check.php文件的顶部使用这个函数是的,我把它放在
<?php
//Database Connection
$db_host = $_SERVER['DB_HOST'];
$db_uname = $_SERVER['DB_UNAME'];
$db_pwd = $_SERVER['DB_PWD'];
$db_name = $_SERVER['DB_DB'];
$db_link = mysql_connect($db_host,$db_uname,$db_pwd);
if(!$db_link){
die("Could Not Connect:".mysql_error($db_link));
}
mysql_select_db($db_name, $db_link) or die('Can\'t use db:'. mysql_error($db_link));
//Logout function
function user_logout($uname){
$query = "UPDATE user SET last_used_token='' WHERE username='$uname'";
mysql_close($db_link);
session_destroy();
header('Location:index.php');
exit();
}
//Getting session variables
session_start();
session_regenerate_id();
$cur_authkey = $_SESSION['authkey'];
$uname = $_SESSION['username'];
//Session data checking
$query = "SELECT last_used_token FROM user WHERE username='$uname'";
$result = mysql_query($query, $db_link) or die('Error while updating auth key <br /> Query:'.$query.'MySQL error no:'.mysql_errno().'<br /> MySQL error:'.mysql_error($db_link));
$row = mysql_fetch_assoc($result);
if($cur_authkey != $row['last_used_token']){
user_logout($uname);
}
?>
<?php
require 'session_check.php';
mysql_close($db_link);
?>
<!DOCTYPE html>
<html>.....</html>
<?php
session_start();
$_SESSION['host']="localhost";
$_SESSION['dbusername']="root";
$_SESSION['dbname']="userinfo";
$_SESSION['username']="testuser";
$_SESSION['authkey']="1";
?>
<!DOCTYPE html>
<html><head></head><body>test<form action="session_check.php"><input type="submit" value="click here"></form></body></html>
<?php
session_start();
//Database Connection
$db_host = $_SESSION['host'];
$db_uname =$_SESSION['dbusername'];
$db_pwd = "";
$db_name = $_SESSION['dbname'];
$db_link = mysql_connect($db_host,$db_uname,$db_pwd);
if(!$db_link){
die("Could Not Connect:".mysql_error($db_link));
}
mysql_select_db($db_name, $db_link) or die('Can\'t use db:'. mysql_error($db_link));
//Logout function
function user_logout($uname,$db_link){
$query = "UPDATE usertable SET flag=1 WHERE username='$uname'";
mysql_query($query, $db_link);
mysql_close($db_link);
session_destroy();
echo "success";
//header('Location:index.php');
exit();
}
//Getting session variables
session_regenerate_id();
$cur_authkey = $_SESSION['authkey'];
$uname =$_SESSION['username'];
//Session data checking
$query = "SELECT flag FROM usertable WHERE username='$uname'";
$result = mysql_query($query, $db_link) or die('Error while updating auth key <br /> Query:'.$query.'MySQL error no:'.mysql_errno().'<br /> MySQL error:'.mysql_error($db_link));
$row = mysql_fetch_assoc($result);
if($cur_authkey != $row['flag']){
user_logout($uname,$db_link);
}
?>