Проблемы с MySQL и MySQL - PullRequest
0 голосов
/ 17 мая 2018

Предупреждение: mysqli_real_escape_string () ожидает ровно 2 параметра, 1 указано в C: \ xampp \ htdocs \ swift \ core \ functions \ general.php в строке 49

Примечание: неопределенная переменная: conn in C: \ xampp \ htdocs \ swift \ core \ functions \ users.php в строке 85

Предупреждение: mysqli_query () ожидает, что параметр 1 будет mysqli, с нулевым значением в C: \ xampp \ htdocs \ swift \ core \ functions \ users.php в строке 85

Неустранимая ошибка: необученная ошибка: вызов неопределенной функции mysqli_result () в C: \ xampp \ htdocs \ swift \ core \ functions \ users.php: 86 Трассировка стека: # 0 C: \ xampp \ htdocs \ swift \ loginact.php (14): f_exists ('') # 1 {main} в C: \ xampp \ htdocs \ swift \ core \ functions \ users.php в строке 86

Я продолжаю получать эти ошибки, но я не могу найти способ, я уже попробовал все .. Надеюсь, кто-то может помочь мне, поскольку я новичок в php. Я делаю это почти как день, и я не могу найти ответ.

Это General.php.

<?php

     $connect_error = 'Sorry, there was some connectivity issue!';
    $conn = mysqli_connect('localhost','root','');
    $db = mysqli_select_db($conn, 'swift');


    function activation($to, $subject, $body) {
        mail($to, $subject, $body, 'From: swift@srikanthnatarajan.com');
    }

    function recovery_user_pass($to, $subject, $body) {
        mail($to, $subject, $body, 'From: swift@srikanthnatarajan.com');
    }

    function f_protect_page() {
        if(f_logged_in() === false) {
            header('Location: flogin.php');
            exit();     
        } 
    }

    function user_protect_page() {
        if(f_logged_in() === false) {
            header('Location: fprotect.php');
            exit();     
        } 
    }

    function use_protect_page() {
        if(f_logged_in() === true) {
            header('Location: fprotect.php');
            exit();     
        } 
    }

    function f_logged_in_redirect() {
        if(f_logged_in() === true) {
            header('Location: index.php');
            exit();
        }
    }

    function array_sanitize($item) {
        $item = htmlentities(strip_tags(mysqli_real_escape_string($item)));
    }

    function sanitize($data) {
        return htmlentities(strip_tags(mysqli_real_escape_string($data)));
    }

    function output_errors($errors) {
        return '<ul><li>' . implode('</li><li>', $errors) . '</li></ul>';
    }

?>

это USERS.PHP, может кто-нибудь, пожалуйста, проверьте это.

<?php

$connect_error = 'Sorry, there was some connectivity issue!';
    $conn = mysqli_connect('localhost','root','');
    $db = mysqli_select_db($conn, 'swift');



    function f_recover($mode, $f_mailid) {
        $mode = sanitize($mode);
        $f_mailid = sanitize($f_mailid);
        $f_data = f_data(f_id_from_email($f_mailid),'f_id','f_fname','f_uname');
        if ($mode == 'f_uname') {
            recovery_user_pass($f_mailid, 'Recovery: Your username', "Hello " . $f_data['f_fname'] . ",\n\nYour username is: " . $f_data['f_uname'] . "\n\n-Swift Airlines");
        }
        else if($mode == 'f_password') {
            $generated_password = substr(md5(rand(999, 999999)), 0, 8);
            f_change_password($f_data['f_id'], $generated_password);

            update_f($f_data['f_id'], array('f_passrec' => '1'));

            recovery_user_pass($f_mailid, 'Recovery: Your password', "Hello " . $f_data['f_fname'] . ",\n\nYour new password is: " . $generated_password . "\n\n-TOFSIS");
        }
    }

    function f_activate($f_mailid, $f_mailcode) {
        $f_mailid = mysqli_real_escape_string($_POST['f_mailid']);
        $f_mailcode = mysqli_real_escape_string($_POST['f_mailcode']);
        if(mysqli_result(mysqli_query("SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_mailid` = '$f_mailid' AND `f_mailcode` = '$f_mailcode' AND `f_active` = 0"), 0) == 1) {
            mysqli_query("UPDATE `flight_users` SET `f_active` = 1 WHERE `f_mailid` = '$f_mailid' ");
            return true;
        }
        else {
            return false;
        }
    }

    function update_f($f_id, $update_data) {
        $update = array();
        array_walk($update_data, 'array_sanitize');
        foreach ($update_data as $field => $data) {
            $update[] = '`' . $field . '` = \'' . $data . '\'';
        }       
        mysqli_query("UPDATE `flight_users` SET " . implode(', ',$update) . "WHERE `f_id` = $f_id") or die(mysqli_error($conn));
    }

    function f_change_password($f_id, $f_password) {
        $f_id = (int)$f_id;
        $f_password = md5($f_password);
        mysqli_query("UPDATE `flight_users` SET `f_password` = '$f_password', `f_passrec` = 0 WHERE `f_id` = $f_id");
    }

    function register_f($register_data) {
        array_walk($register_data, 'array_sanitize');
        $register_data['f_fname'] = ucwords(strtolower($register_data['f_fname']));
        $register_data['f_lname'] = ucwords(strtolower($register_data['f_lname']));
        $register_data['f_password'] = md5($register_data['f_password']);
        $register_data['f_uname'] = strtolower($register_data['f_uname']);
        $fields = '`' . implode('`, `', array_keys($register_data)) . '`';
        $data = '\'' . implode('\', \'', $register_data) . '\'';

        mysqli_query("INSERT INTO `flight_users` ($fields, `f_regdate`) VALUES ($data, NOW())");
        activation($register_data['f_mailid'], 'Swift Airlines: Activate your account', "Hello " . $register_data['f_fname'] . ", \n\nYou need to activate your account in order to use the features of Swift Airlines. Please click the link below: \n\nhttp://srikanthnatarajan.com/swift/activate.php?f_mailid=" . $register_data['f_mailid'] . "&f_mailcode=" . $register_data['f_mailcode'] . " \n\n-Swift Airlines");
    }

    function f_data($f_id){
        $data = array();
        $f_id = (int)$f_id;
        $func_num_args = func_num_args();
        $func_get_args = func_get_args();
        if($func_num_args > 1) {
            unset($func_get_args[0]);
            $fields = '`'. implode('`, `', $func_get_args) . '`'; 
            $data = mysqli_fetch_assoc(mysqli_query("SELECT $fields FROM `flight_users` WHERE `f_id` = $f_id"));            
            return $data;
        }
    }

    function f_logged_in() {
        return (isset($_SESSION['f_id'])) ? true : false;
    }

    function f_exists($f_uname) {
        $f_uname = sanitize($f_uname);
        $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_uname`= '$f_uname'");
        return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
    }

    function f_email_exists($f_mailid) {
        $f_mailid = sanitize($f_mailid);
        $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_mailid`= '$f_mailid'");
        return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
    }

    function f_regid_exists($f_regid) {
        $f_regid = sanitize($f_regid);
        $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_regid`= '$f_regid'");
        return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
    }

    function f_active($f_uname) {
        $f_uname = sanitize($f_uname);
        $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_uname`= '$f_uname' AND `f_active` = 1");
        return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
    }

    function f_id_from_username($f_uname) {
        $f_uname = sanitize($f_uname);
        $query = mysqli_query($conn, "SELECT `f_id` FROM `flight_users` WHERE `f_uname` = '$f_uname'");
        return mysqli_result($conn, $query, 0, 'f_id');
    } 

    function f_id_from_email($f_mailid) {
        $f_mailid = sanitize($f_mailid);
        $query = mysqli_query($conn, "SELECT `f_id` FROM `flight_users` WHERE `f_mailid` = '$f_mailid'");
        return mysqli_result($conn, $query, 0, 'f_id');
    } 

    function f_login($f_uname, $f_password) {
        $f_id = f_id_from_username($f_uname);
        $f_uname = sanitize($f_uname);
        $f_password = md5($f_password);
        $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_uname`= '$f_uname' AND `f_password` = '$f_password'");
        return (mysqli_result($conn, $query, 0) == 1) ? $f_id : false;
    }

?>

и это Loginact.php ------------------

<?php

        $title = 'Swift Airlines | Login Error';
    include $_SERVER["DOCUMENT_ROOT"].'/swift/core/init.php';


    if(empty($_POST) === false) {
        $f_uname = $_POST['f_uname'];
        $f_password = $_POST['f_password'];

        if(empty($f_uname) === true || empty($f_password) === true){
            $errors[] = 'You need to enter both, the username and the password!';
        } 
        else  if (f_exists($f_uname)===false) {
            $errors[] = 'No such user exists! Please register!';
        }
        else if(f_active($f_uname)===false) {
            $errors[] = 'Please activate your account!';
        }
        else {

            if(strlen($f_password)>32) {
                $errors[] = 'Password too long!';
            }

            $f_login = f_login($f_uname, $f_password);
            if($f_login===false) {
                $errors[] = 'Username and Password do not match!';
            }
            else {
                $_SESSION['f_id'] = $f_login;
                header('Location: http://localhost/swift/index.php');
                exit();
            }
        }       
    }
    else {
            $errors[] = 'No Log In credentials received!';
        }

    include $_SERVER["DOCUMENT_ROOT"].'/swift/includes/overall/header.php';

    if(empty($errors) === false) {
?>
    <br/><h4>We tried to log you in, but : </h4><br/>

<?php
    echo output_errors($errors);
    }

    include $_SERVER["DOCUMENT_ROOT"].'/swift/includes/overall/footer.php';

?>

Я продолжаю получать эти ошибки, но я не могу найти способ, я уже попробовал все .. Надеюсь, кто-то может помочь мне, поскольку я новичок в php. Я делаю это почти как день и не могу найти ответ.

я знаю, что php довольно тяжело, и я искал ответ почти целый день. Я просто новичок в программировании и делаю все возможное, чтобы усердно учиться этим вещам, надеюсь, кто-нибудь мне поможет.

И я надеюсь, что смогу узнать больше о php и другом языке программирования здесь ... я буду продолжать искать ответ, даже если я сейчас спрашиваю ... большое спасибо.

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

1- строка general.php 49: посмотрите mysqli_real_escape_string , в процедурном коде вы должны указать 2 аргумента, ссылку (или соединение) и строку.

function array_sanitize($conn,$item) {
        $item = htmlentities(strip_tags(mysqli_real_escape_string($conn,$item)));
    }

function sanitize($conn,$data) {
    return htmlentities(strip_tags(mysqli_real_escape_string($conn,$data)));
}

2- users.php, оба в строке 85, $ conn не существует в области действия функции.Передайте $ conn в качестве аргумента функции и вызовите ее с помощью ($ conn, $ f_uname).

function f_exists($conn,$f_uname) {
    $f_uname = sanitize($f_uname);
    $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_uname`= '$f_uname'");
    return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
}

3 - ваш вопрос в строке 86 совпадает с моим пунктом # 2.

0 голосов
/ 17 мая 2018

Я сомневаюсь, что вы все перепробовали!

Похоже, что вы пытаетесь перейти от функций mysql_ к mysqli _.

Из руководства для mysqli_fetch_array:

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);

/* numeric array */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);

$ link - это ваше соединение с MySQL. В вашем коде это $ conn.

В ваших функциях есть проблема с областью действия. $ conn находится в глобальной области видимости, поэтому не устанавливается в области действия функции.

Разбейте его, начните с чего-то вроде вашей функции f_id_from_email, следуйте и попробуйте перевести примеры из руководства.

Сообщения об ошибках на самом деле весьма полезны, если их читать. Но вы, вероятно, ошеломлены, поскольку сталкиваетесь со многими.

вызов неопределенной функции mysqli_result ()

Это потому, что нет функции mysqli_result.

0 голосов
/ 17 мая 2018

Примечание: неопределенная переменная: конн ... Добавьте в функцию global $ conn . Это очень плохая практика

function f_exists($f_uname, $conn) {
    // or global $conn;
    $f_uname = sanitize($f_uname);
    $query = mysqli_query($conn, "SELECT COUNT(`f_id`) FROM `flight_users` WHERE `f_uname`= '$f_uname'");
    return (mysqli_result($conn, $query, 0) == 1) ? true : false; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...