Попытка получить свойство 'email' не-объекта - PullRequest
0 голосов
/ 27 мая 2019

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

Произошла ошибка PHP. Серьезность: уведомление

Сообщение: попытка получить свойство 'email' необъекта

Имя файла: controllers / forms.php

Номер строки: 26

Backtrace:

Файл: E: \ Software \ XAMPP \ XAMPP \ HTDOCS \ ciauth \ приложения \ Контроллеры \ forms.php Строка: 26 Функция: _error_handler

Файл: E: \ Software \ XAMPP \ xampp \ htdocs \ ciauth \ index.php Строка: 315 Функция: require_once

Ниже находится контроллер

<?php 
class Forms extends CI_Controller 
{
    public function __construct()
    {

        parent::__construct();
        $this->load->database();
        $this->load->library('session');
        $this->load->helper('url');
        $this->load->model('user_model', 'auth');
    }

   public function forgot_pass()
    {
        if($this->input->post('forgot_pass'))
        {
            $email=$this->input->post('email');
            $this->load->model('user_model', 'auth');
            $this->load->library('form_validation');
            $this->form_validation->set_rules('email', 'E-mail', 'required');

            if ($this->form_validation->run() == TRUE) {
            $que=$this->db->query("select password,email from users where email='$email'");         
            $row=$que->row();
            $user_email=$row->email;
            if((!strcmp($email, $user_email)))
            {
                $pass=$row->password;
                $to = $user_email;
                $subject = "Password";
                $txt = "Your password is $pass .";
                $headers = "From: user@testdomain.com" . "\r\n" . "CC: hamza_zon@outlook.com ";
                mail($to,$subject,$txt,$headers);
                $this->load->view('user/header');
                $this->load->view('user/confirm');
                $this->load->view('user/footer');
                }
            else{
            $data['error']="Invalid Email ID !";
            }
        }
            else{
                $data['error']="Email ID is required !";
            }
    }
            $this->load->view('user/header');   
            $this->load->view('user/forgot_pass',@$data);
            $this->load->view('user/footer');   

   }
}
?>

Ответы [ 5 ]

2 голосов
/ 27 мая 2019

Вы должны проверить перед $user_email=$row->email;, что согласно вашей записи критерия существует или нет, если строка не существует, вы получите эту ошибку

, поэтому вы должны проверить, как показано ниже

$row=$que->row();
if($row) {

   $user_email=$row->email;
}
1 голос
/ 27 мая 2019

$ строка = $ que-> строка ();

$ row, вероятно, возвращается как NULL или ложное значение.

var_dump ($ row) для проверки.

if(!$row)
{
    die("user not found");
}

или

if(empty($row))
{
    die("user not found");
}
1 голос
/ 27 мая 2019

Вы должны справиться с этим,

$query = $this->db->query("select password,email from users where email=".$email);
if ($query->num_rows() > 0) {
    $row = $query->row();
    $user_email = $row->email;
} else {
    $user_email = '';
}
//then your next if condition in which you are comparing two strings
1 голос
/ 27 мая 2019

Примените условие как, потому что в вашем случае он может не получить результат из таблицы для этого письма,

if (isset($row))
{

Примечание: row метод возвращает одну строку результатов. Если ваш запрос содержит более одной строки, он возвращает только первую строку. Результат возвращается как объект. Вот пример использования:

$que=$this->db->query("select password,email from users where email like '$email'");         

$row = $que->row();

if (isset($row))
{
    $user_email = $row->email;
    $user_password = $row->password;
}

Вот краткий документ для того же.

1 голос
/ 27 мая 2019

Попробуйте вот так

$que = $this->db->query("select password,email from users where email=".$email);

if(isset($row) && $row != ''){
  $txt = "Your password is" . $pass;
  //Coding...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...