包含php文件:
<?php
session_start();
$mysqli = new mysqli('[removed]', '[removed]', '[removed]', '[removed]') or mysqli_connect_error();
function m($str, $mysqli) { return "'".$mysqli->real_escape_string($str)."'"; }
function h($str, $mysqli) { echo $mysqli->htmlspecialchars($str); }
$user = $mysqli->real_escape_string($_SESSION['username']);
$user_query = "SELECT points FROM users WHERE username =" .m($user, $mysqli) ."";
$result = $mysqli->query($user_query);
$row = $result->fetch_assoc();
$points = $row['points'];
function checklogin(){
if(isset($_SESSION['username'])){
echo $user . " Points: " . $points;
}
}
?>
html相关部分将是
<? include ('config.php')
session_start();
checklogin(); ?>
注意:在函数外部调用时,变量可以正常工作。
答案 0 :(得分:5)
如果您想根据最佳做法执行此操作,则以下操作优于使用全局变量。
function checklogin($user,$points)
{
if(isset($_SESSION['username'])){
echo $user . ' Points: ' . $points;
}
}
答案 1 :(得分:1)
Thoses变量是全局的,所以你不能指望那些是checkLogin
函数。因此,您将值作为函数参数传递:
function checklogin($user, $points, $session) {
if (!isset($session['username'])) return;
echo $user, " Points: ", $points;
}
用法:
<?php
include 'config.php';
checklogin($user, $points, $_SESSION);
从技术上讲,您不需要将$_SESSION
作为参数传递,我们在示例中执行此操作,以便稍后可以替换它,并且该函数不需要具有$_SESSION
变量。
答案 2 :(得分:1)
PHP全局变量仅存在于全局范围内。要从函数中访问它们,必须将全局范围包含在函数中。请参阅以下链接:
答案 3 :(得分:1)
您的代码中存在多处错误:
session_start()
两次,则会产生warning。<?
),这是不好的做法。那些是真正错误的事情。
现在进行一些改进:
m()
和h()
作为名称,因为它们不清楚它们在做什么)。你的硬盘上有足够的空间,所以不需要多余的信件。如果在即将到来的日子里你可能不记得它是m还是h,还是z或p,你会感谢你自己。config.php
似乎与配置内容无关。一些可帮助您解决这些问题的一般性参考: