Intereting Posts
Удалить все повторяющиеся символы в строке? обновить встроенный документ в mongodb, используя php Проблемы с перенаправлением на контактную форму Мой jQuery код ajax обновить страницу без причины Как я должен сортировать этот массив по ключу с помощью usort? сортировать многомерный ассоциативный массив? ZEND – Как заставить его работать на общем хосте? Разница между интерполяцией (с использованием {} squiggly brackets) и конкатенации (., Или точки) при построении оператора SQL Проверьте, подключен ли пользователь к facebook, а затем проверьте, понравилась ли ему страница Как загрузить / сохранить несколько изображений в базе данных mysql в php Разрешить доступ к файлу PHP только через ajax на локальном сервере Как исправить это незаконное смещение строк? Правильный формат для строк / чисел, начинающихся с нуля? Максимальный размер INT для 32-битной системы форма не отправляет файл изображения в электронную почту

Добавление полей

Я работаю с библиотекой Tank Auth весь день и задаюсь вопросом. Я добавил два поля в регистрационную форму: first_name и last_name соответственно, и я пытаюсь выяснить, почему его не вставлять на страницу user_profiles.

С обновленным кодом я получаю эту ошибку:

Возникла ошибка PHP

Уровень важности: предупреждение

Сообщение: Отсутствует аргумент 5 для Tank_auth :: create_user (), вызывается в /home/xtremer/public_html/kowmanager/application/controllers/auth.php в строке 136 и определяется

Имя файла: libraries / Tank_auth.php

Номер строки: 162 Ошибка PHP.

Уровень важности: уведомление

Сообщение: Неопределенное свойство: Tank_auth :: $ users

Имя файла: libraries / Tank_auth.php

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

Неустранимая ошибка: вызов функции-члена UpdateProfileInfo () для не-объекта в /home/xtremer/public_html/kowmanager/application/libraries/Tank_auth.php в строке 188

Обновленный код:

Auth Controller

Авторизация

Модель пользователей

Любые идеи о том, что я делаю сейчас неправильно?

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

То, что вам нужно сделать, это поместить два столбца в таблицу user_profiles , затем добавить функцию к models/tank_auth/users.php с чем-то вроде:

 function UpdateProfileInfo ($userID, $firstname, $lastname) { return $this->db->update('user_profiles', array('firstname'=>$firstname, 'lastname'=>$lastname), array('user_id' => $userID)); } 

Затем замените (в /libraries/Tank_auth.php )
function create_user($username, $email, $password, $email_activation)
С
function create_user($username, $email, $password, $email_activation, $userInfo)

Затем справа внизу (в /libraries/Tank_auth.php )
if (!is_null($res = $this->ci->users->create_user($data, !$email_activation))) { Добавить
$this->users->UpdateProfileInfo($userInfo["firstname"],$userInfo["lastname"]);

Затем замените (в /controllers/auth.php )

  if ($this->form_validation->run()) { // validation ok if (!is_null($data = $this->tank_auth->create_user( $use_username ? $this->form_validation->set_value('username') : '', $this->form_validation->set_value('email'), $this->form_validation->set_value('password'), $email_activation))) { // success 

с:

 $userInfo["firstname"] = $this->form_validation->set_value("firstname"); $userInfo["lastname"] = $this->form_validation->set_value("lastname"); if ($this->form_validation->run()) { // validation ok if (!is_null($data = $this->tank_auth->create_user( $use_username ? $this->form_validation->set_value('username') : '', $this->form_validation->set_value('email'), $this->form_validation->set_value('password'), $email_activation, $userInfo))) { // success 

Это не проверено, хотя оно должно работать, расскажите мне, как это происходит
Максимум

Я заметил пару вещей:

 private function create_profile($user_id, $data) { $this->db->set('user_id', $user_id); $this->db->set('first_name', $first_name); $this->db->set('last_name', $last_name); return $this->db->insert($this->profile_table_name); } 

$data – это массив, я предполагаю, что вы ДОЛЖНЫ передавать first_name и last_name (что у вас нет).

Также TANK AUTH требует, чтобы вы обновили столбцы, необходимые для схемы базы данных профиля (вы это делали? Не упоминал).

Чтобы исправить код выше, вам нужно будет передать более подробную информацию в массиве ( $data ) следующим образом:

 $data['first_name'] = "Bob"; $data['last_name'] = "Smith"; create_profile($user_id, $data); // which would then use the first & last names 

Не то, чтобы я хотел поговорить об этом, но … *

Вам нужно сделать то, что я показал вам:

  • определите 2 переменные (имя и фамилия) и передайте их в create_profile fn.
  • правильно использовать USE-переменные (не использовать $data[0] то есть SLOPPY, делать $data['first_name'] если это то, что вы назвали значением массива. Нет причин быть sloppy и делать $ data [0] – угадывание не меньше при ключевом значении вашего массива).
  • его не сложно, прочитайте свой код (понимайте его, если вы не сделаете этого, тогда отступите и попытайтесь сломать его по строкам, что происходит, я получаю ощущение, что у вас нет идеи о том, что делает какая-либо из этих функций).

Проверьте файл Tank_auth в библиотеке, есть еще одна функция «create_user», которую вы должны изменить. Правильно управлять переменными. 3 часа ломаю голову с этим.