0

I have some code for the case when user forgot their password but its not working. When users proceed, messages is not send to their email. What is wrong?

This is code in PHP

require_once 'includes/definitions.php';
require_once FUNCS_DIR . 'core.functions.php';

$pid = 13;

$template->assign(PAGE_TITLE, $langs[47]);
$template->assign(PAGE_ID, $pid);

/* Rendering template */

$errors = array();
$step = 1;

$reset_code = null;

if(empty($_POST) == false) {

    if(isset($_POST['email'])) {

        $email = $_POST['email';

        if (email_exists($email) == false)
            $errors[] = $langs[264];

        if (empty($errors)) {

            $reset_code = md5($_POST['email'] + microtime());

            update_email_code($email, $reset_code);

            $data['reset_link'] = get_setting('base_url') . 'forgot_password?reset_code=' . $reset_code;

            send_email_template('forgot_password.tpl', $data, $email, get_setting('site_name') . ' - Password Reset');
        }

    }else{

        $password = $_POST['password'];
        $password_repeat = $_POST['password_repeat'];
        $reset_code = $_POST['reset_code'];

        $member_data = get_member_email_code($reset_code);

        $step = 2;

        if($member_data == false)
            $errors[] = $langs[265];

        if($password != $password_repeat)
            $errors[] = $langs[266];

        if(strlen($password) < get_setting('min_pass_length'))
            $errors[] = $langs[267];

        if(!preg_match('/[A-Z]/', $password))
            $errors[] = $langs[268];

        if (!preg_match('#[0-9]#', $password))
            $errors[] = $langs[269];

        if(empty($errors)){

            $password_hash = hash('sha256', $password);

            if(update_password($member_data['members_id'], $password_hash)){
                redirect('login?pr=true');
            }else{
                $errors[] = $langs[270];
            }

        }

    }

}

if(empty($_GET) == false){

    $reset_code = $_GET['reset_code'];
    $member_data = get_member_email_code($reset_code);

    if(empty($reset_code)){
        $errors[] = $langs[271];
    }else if($member_data == false){
        $errors[] = $langs[272];
    }

    if(empty($errors)){

        $step = 2;

    }

}

$template->assign('reset_code', $reset_code);

$template->assign('errors', $errors);
$template->assign('step', $step);

$template->display($current_template . 'forgot_password.tpl');
arviman
  • 5,087
  • 41
  • 48
xhuljan
  • 41
  • 5

1 Answers1

0

When your script doesn't work. Look in error logs first. In this case, you should see a syntax error on this line:

$email = $_POST['email';

Replace it with:

$email = $_POST['email'];
BeetleJuice
  • 39,516
  • 19
  • 105
  • 165
  • yes there was a mistake on copy paste. when you put email for reset passord shown this message : We have sent an email asking you to reset your password. Please check your spam folder. but messages doesnt go to email i entered and in error log doesnt show enything – xhuljan Jul 20 '16 at 10:36