gpt4 book ai didi

php - StudentRegister.php 脚本在本地服务器中有效,但在托管服务器中无效

转载 作者:行者123 更新时间:2023-11-29 03:21:54 24 4
gpt4 key购买 nike

我似乎无法弄清楚为什么这个脚本不起作用,基本上下面的脚本在我的本地 XAMPP 服务器上运行得很好,它完美地插入了细节,但我决定将它上传到主机服务器,当用 Postman 测试它时它没有插入细节。

我实际上得到了这个结果“发生了一些错误,请重试”。

这是图片

image

这是脚本 这是 StudentRegister.php 脚本

<?php

require_once '../include/DbOperations.php';

$response = [];

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (isset($_POST['StudentsEmail']) and isset($_POST['StudentUsername']) and isset($_POST['Password'])) {
//operate the data further

$db = new DbOperations();

$result = $db->createUser($_POST['StudentsEmail'], $_POST['StudentUsername'], $_POST['Password']);
if ($result == 1) {
$response['error'] = false;
$response['message'] = "User registered successfully";
} elseif ($result == 2) {
$response['error'] = true;
$response['message'] = "Some error occurred please try again";
} elseif ($result == 0) {
$response['error'] = true;
$response['message'] = "It seems you are already registered, please choose a different email and username";
}
} else {
$response['error'] = true;
$response['message'] = "Required fields are missing";
}
} else {
$response['error'] = true;
$response['message'] = "Invalid Request";
}

echo json_encode($response);

这是 DbOperations.php 脚本

    <?php 

class DbOperations {

private $con;

function __construct() {
require_once dirname(__FILE__) . '/DbConnect.php';
$db = new DbConnect();
$this->con = $db->connect();
}

/*CRUD -> C -> CREATE */

public function createUser($studemail, $studusername, $studpass) {
if ($this->isUserExist($studemail, $studusername)) {
return 0;
} else {
//$password = md5($studpass);
$stmt = $this->con->prepare("INSERT INTO `studentdetails` (`Id`, `StudentFullName`, `Gender`, `Age`, `NationalIdentification`, `RegistrationNumber`, `StudentsEmail`, `StudentUsername`, `Password`, `PhoneNumber`, `YearofStudy`, `Semester`, `StudentImage`) VALUES (NULL,NULL, NULL,NULL,NULL,NULL,?,?,?,NULL,NULL,NULL,NULL);");
//$stmt->bind_param("sss",$studemail,$studusername,$password);
$stmt->bind_param("sss", $studemail, $studusername, $studpass);

if ($stmt->execute()) {
return 1;
} else {
return 2;
}
}
}

public function userLogin($studusername, $studpass) {
//$password = md5($studpass);
$stmt = $this->con->prepare("SELECT Id FROM studentdetails WHERE StudentUsername = ? AND Password = ?");
//$stmt->bind_param("ss",$studusername,$password);
$stmt->bind_param("ss", $studusername, $studpass);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}

public function getUserByUsername($studusername) {
$stmt = $this->con->prepare("SELECT * FROM studentdetails WHERE StudentUsername = ?");
$stmt->bind_param("s", $studusername);
$stmt->execute();
return $stmt->get_result()->fetch_assoc();
}

public function isUserExist($studemail, $studusername) {
$stmt = $this->con->prepare("SELECT Id FROM studentdetails WHERE StudentsEmail = ? OR StudentUsername = ?");
$stmt->bind_param("ss", $studemail, $studusername);
$stmt->execute();
$stmt->store_result();
return $stmt->num_rows > 0;
}
}
?>

最佳答案

对于像在本地一样远程工作的脚本:

1) 在正确的端口上进行网络访问(默认 3306)。有时网络管理员、防火墙、各种其他挑战会发生,并且端口根本不可用。验证您的数据包在请求此数据并随其返回的往返努力中是否成功。

2) 权限:MySQL 用户是基于位置的。有权从本地主机(即:本地 XAMPP 服务器)访问数据库的用户可能具有相同的名称,但从不同的位置访问并被拒绝访问。为同一命名用户找到具有多个凭据的服务器并不罕见。

“bob@localhost”/“bob@127.0.0.1”/“bob@%”/“Bob@192.168.22.7”在技术上都是不同的用户,可以拥有不同的访问凭证,从而导致从数据库到任何地方的不同权限个别字段。

3) 日志记录是您的 friend 。服务器端和客户端日志记录可用,这通常会更直接地说明您的问题(虽然通常很神秘,但谷歌也是您的 friend ,可以将“工程师说话”翻译成英语)。在谷歌搜索异常错误消息的次数多得我数不过来后,我发现自己又回到了 Stack 上。记住:服务器上没有错误并不意味着你已经死在水里,mysql 客户端也可以登录(mysqli 有内置的错误消息),而且结果通常会告诉你“没有响应”结果。例如,如果客户端没有响应结果而服务器没有任何响应,您可能会被网络阻止。

关于php - StudentRegister.php 脚本在本地服务器中有效,但在托管服务器中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42991510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com