Arhn - архитектура программирования

Codeigniter неверный источник изображения CAPTCHA

Привет, я пытаюсь использовать помощник CodeIgniter captcha для своей страницы регистрации. У меня есть пользовательский контроллер с функцией регистрации, как показано ниже:

public function register(){   
    $this->form_validation->set_rules('user_name' , 'Username' , 'trim|required|max_length[32]'); 
    $this->form_validation->set_rules('captcha' , 'Captcha' , 'trim|required|max_length[32]|callback_check_captcha');
    $this->form_validation->set_rules('password', 'Password','trim|required|min_length[5]|max_length[12]');
    $this->form_validation->set_rules('confirm_password', 'Confirm Password','trim|required|min_length[5]|max_length[12]|matches[password]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email');
    if ($this->form_validation->run()==FALSE){
    //Captcha code 
    $this->load->helper('captcha');
    //Captcha Config 
    $vals = array(
        'img_path'      => './captcha/',
        'img_url'       => './captcha/',
        'img_width'     => '150',
        'img_height'    => 30,
        'expiration'    => 7200,
        'word_length'   => 8,
        'font_size'     => 16,
        'img_id'        => 'Imageid',
         'font_path'     => '/fonts/Open.ttf',

        // White background and border, black text and red grid
        'colors'        => array(
                'background' => array(255, 255, 255),
                'border' => array(255, 255, 255),
                'text' => array(0, 0, 0),
                'grid' => array(255, 40, 40)
        )
    );
    //Create the Captcha
    $cap = create_captcha($vals);

    // Store The Created Captcha in DB for Verification  
    $data = array(
    'captcha_time'  => $cap['time'],
    'ip_address'    => $this->input->ip_address(),
    'word'          => $cap['word']
    );
    $this->register_model->store_captcha($data);
    //Load View
    $data['image']=$cap['image'];
    var_dump($data['image']);exit();
    $this->load->view('templates/header');
    $this->load->view('register' , $data);
    $this->load->view('templates/footer');
    }else {
              $option=array('cost'=>12);
              $encrypt_password=password_hash($this->input->post('password'),PASSWORD_BCRYPT,$option);
              $this->register_model->add_user($encrypt_password);
              $this->session->set_flashdata('user_registered','You are Successfully Registered and can Log in ');
              redirect('register/success');
    }
}

Если вы видите приведенный выше код, я устанавливаю «img_path» на «./captcha/» (используя метод относительного корня). У меня эта папка с капчей в корне.

На мой взгляд, у меня есть:

    <div class="form-group">
    <label>Enter UserID</label>
    <input type="text" class="form-control" name="user_name"  placeholder="Enter Your UserId">
  </div>
  <div class="form-group">
    <label>Enter Your Email</label>
    <input type="email" class="form-control" name="email"  placeholder="Enter Your Email">
  </div>
  <div class="form-group">
    <label>Enter Your Password </label>
    <input type="password" class="form-control" name="password"  placeholder="Enter Password">
  </div>
  <div class="form-group">
        <label>Re-enter Password </label>
        <input type="password" class="form-control" name="confirm_password"  placeholder="Renter Password">
  </div>
  <?php echo $image ; ?>
  <div class="form-group">
        <label>Solve Captcha </label>
        <input type="text" class="form-control" name="captcha" >
  </div>
   <button type="submit" class="btn btn-primary">Submit</button>
  <?php echo form_close();?>

The problem is my image is not showing up . When inspected the captcha image I found it to be correct like below :

<img id="Imageid" src="./captcha/1551023447.5228.jpg" style="width: 150; height: 30; border: 0;" alt=" ">

Однако на самом деле src «вычисляется» по адресу: http://[::1]/login/user/captcha/1551023447.5228.jpg . См. изображение ниже.

вычисленный источник

Может ли кто-нибудь сказать мне, почему src указывает на http://[::1]/login/user/captcha/1551023447.5228.jpg все, хотя должно быть http://[::1]/login/captcha/1551023447.5228.jpg ? Мне также любопытно узнать, как наведение курсора на img src в chrome показывает значение, отличное от того, что на самом деле находится в коде. Я понимаю, что /.path используется для обхода папок из корня, но я впервые вижу что-то подобное в chrome. Спасибо .


Ответы:


1

Параметры пути выглядят неправильно. Это должен быть полный URL-адрес каталога с капчей, например

$vals = array(
    'img_path'      => 'captcha/',
    'img_url'       => base_url('captcha')
.....

Предполагая, что у вас есть каталог captcha в корне вашего проекта, вы также включили помощник url в config/autoload.php

Что касается пути к инструменту chrome dev, он вычисляет относительный путь отображаемого полного URL-адреса, чтобы вы могли перейти туда, щелкнув.

25.02.2019
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..