私はこれを何時間も続けて、自分が行った小さな間違いを見つけようとしましたが、それを見つけることができません...私がしているのは、関数内で変数をグローバルとして呼び出すことだけで、それも機能していませんそれはその上の関数でうまく機能しましたが...
mysqliがnullであるというエラーが表示されます...
include 'data/mysqli_connect.php';
function process_login(){
global $mysqli;
$username = $_SESSION['username'];
$sql = "SELECT * FROM auth WHERE user='".mysqli_real_escape_string($mysqli,$username)."'";
$query = mysqli_query($mysqli,$sql);
if(mysqli_num_rows($query)>0){
$sql = "DELETE FROM auth WHERE user='".mysqli_real_escape_string($mysqli,$username)."'";
$query = mysqli_query($mysqli,$sql);
if(!$query){
die(mysqli_error());
}
}
$sql = "INSERT INTO auth (user, session) VALUES ('".mysqli_real_escape_string($mysqli,$username)."', '".$_SESSION['id']."')";
$query = mysqli_query($mysqli,$sql);
if(!$query){
echo "Can not insert info into database!<br />". mysqli_error();
}else{
header("Location:chat.php");
}
}
function logout(){
global $mysqli;
$sql = "DELETE FROM auth WHERE session='".mysqli_real_escape_string($mysqli,$_SESSION['id']). "'";
$query = mysqli_query($mysqli,$sql);
if(!$query){
echo "Can not delete info from database!";
}else{
session_destroy();
header("Location: chat.php");
}
}
function get_username(){
global $mysqli;
$sql = "SELECT * FROM auth WHERE session='".mysqli_real_escape_string($mysqli,$_SESSION['id']). "'";
$query = mysqli_query($mysqli,$sql);
$row = mysqli_fetch_array($query);
if(mysqli_num_rows($query) == "0"){
$username = "Guest";
}else{
$username = $row['user'];
}
return $username;
}
function post_message(){
global $mysqli;
$text = addslashes(htmlentities(htmlspecialchars($_REQUEST['text'])));
$sql = "INSERT INTO chat (time, user, text) VALUES ('".date("H:i")."', '".get_username()."', '".$text."')";
$query = mysqli_query($mysqli,$sql);
if(!$query){
die(mysqli_error());
}
}
mysqli_connect.php
$mysqli = mysqli_connect(localhost, "info", "info", "info");
私が言ったように、それはこれより上の機能で動作しましたが、これでは動作しませんでした、それは意味をなさない...私はどこかで愚かな間違いをしていると思います。
ちなみに、私がテストして動作させた機能はprocess_login()
、logout()
get_username()
get_username()
最初に実行され、次に実行されprocess_login()
ます。post_message()
Enterキーを押すとエラーコードが表示されるため、Enterキーを押すとそれを呼び出すjqueryコードから実行されます。これはおそらく正常に機能します。
ああ、悪いコードフォーマットについて申し訳ありませんが、ここでそれを修正する方法がわかりません。
あなたが見つけるかもしれないどんな助けやアドバイスにも感謝します。