StudentRegister.php脚本在本地服务器中工作,但在托管服务器

时间:2017-03-24 04:37:06

标签: php mysql mysqli

我似乎无法弄清楚为什么这个脚本不起作用,基本上下面的脚本在我的本地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 个答案:

答案 0 :(得分:0)

让脚本像本地一样远程工作:

1)在适当的端口上进行网络访问(默认为3306)。有时会出现网络管理员,防火墙,各种其他挑战,并且端口根本不可用。验证您的数据包在往返工作中是否成功,以请求此数据并随之返回。

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

&#34;摆锤@本地&#34; /&#34; bob@127.0.0.1" /&#34;摆锤@%&#34; /&#34; Bob@192.168.22.7& #34;在技​​术上都是不同的用户,并且可以具有不同的访问凭证,从而导致从DB到各个字段的任何地方都有不同的权限。

3)记录是你的朋友。服务器端和客户端日志记录是可用的,这通常更直接地说明您的问题(虽然通常是神秘的,谷歌也是你的朋友,可以翻译&#34;工程师说&#34;英语)。我经常在谷歌搜索一个怪异的错误信息后发现自己回到了这里。请记住:服务器上没有错误并不意味着你已经死了,mysql客户端也可以记录(mysqli内置错误消息),结果通常会告诉你&#34;没有回应&#34;结果。如果客户端没有响应结果且服务器中没有任何结果,则可能会被网络阻止,例如。