2013-05-16 2 views
-1

У меня есть этот код, это чтобы зарегистрировать пользователя по ссылке, указанной в письме. поэтому идентификатор и электронная почта GET формируются по форме и дисплею, а затем проверяя, есть ли пользователь, тогда он отображает содержимое в поле, то это просто обновление. Теперь то, что я пытаюсь сделать, это CREATE, поскольку идентификатор в ссылке, которая предоставляется пользователю, пока не существует. Это код в файле под названием register.php

<?php 

    load_function('database.php'); 

    if(!empty($_GET['user_id']) && !empty($_GET['cbemail'])) 
    { 
     $user_id = base64_decode($_GET['user_id']); 
     $email = base64_decode($_GET['cbemail']); 

     $employee = get_employee($user_id,$email); 

    } 

     /*$first_name = $_POST['first_name']; 
     $middle_name = $_POST['middle_name']; 
     $last_name = $_POST['last_name']; 
     $suffix = $_POST['suffix']; 
     $gender = $_POST['gender']; 
     $date_birth = $_POST['date_birth']; 
     $cbemail = $_POST['cbemail']; 
     $locality_id = $_POST['locality_id']; 
     $home_phone = $_POST['home_phone']; 
     $mobile_phone = $_POST['mobile_phone'];*/ 

?> 

<div id="main-content"> 
    <div id="emp_registrationform"> 
     <form action="" method="post"> 
     <table width="600" border="0"> 
     <h1>Create Employee</h1> 
      <tr> 
      <td class="align-right"><label for="user_id">User</label> 
      <input type="text" name="user_id" id="user_id" 
      value="<?php if(isset($user_id)){echo $user_id ; } ?>"/></td> 
      </td> 
      </tr> 
      <tr> 
      <td class="align-right"><label for="first_name">First Name</label> 
       <input type="text" name="first_name" id="first_name" value='<?php echo $employee['first_name'] ?>'/></td> 
      <td><label for="birth_date">Birth Date</label> 
       <input type="text" name="birth_date" id="birth_date" value='<?php echo $employee['date_birth'] ?>'/></td> 
      </tr> 
      <tr> 
      <td class="align-right"><label for="middle_name">Middle Name</label> 
       <input type="text" name="middle_name" id="middle_name" value='<?php echo $employee['middle_name'] ?>'/></td> 
      <td><label for="cbemail">Email</label> 
       <input type="text" name="cbemail" id="cbemail" 
       value="<?php if(isset($email)){echo $email ; } ?>"/></td> 
      </tr> 
      <tr> 
      <td class="align-right"><label for="last_name">Last Name</label> 
       <input type="text" name="last_name" id="last_name" value='<?php echo $employee['last_name'] ?>'/></td> 
      <td><label for="locality_id">Locality ID</label> 
       <input type="text" name="locality_id" id="locality_id" value='<?php echo $employee['locality_id'] ?>'/></td> 
      </tr> 
      <tr> 
      <td class="align-right"><label for="suffix">Suffix</label> 
       <input type="text" name="suffix" id="suffix" value='<?php echo $employee['suffix'] ?>'/></td> 
      <td><label for="home_phone">Phone(Home)</label> 
       <input type="text" name="home_phone" id="home_phone" value='<?php echo $employee['home_phone'] ?>'/></td> 
      </tr> 
      <tr> 
      <td class="align-right"><label for="gender">Gender</label> 
       <select> 
       <option selected><?php echo $employee['gender'] ?></option> 
       <option value="male">Male</option> 
       <option value="female">Female</option> 
       </select></td> 
      <td><label for="mobile_phone">Phone(Mobile)</label> 
       <input type="text" name="mobile_phone" id="mobile_phone" value='<?php echo $employee['mobile_phone'] ?>'/></td> 
      </tr> 
      <td class="align-right"> 
       <input type="submit" id="submit-btn" value="Create Employee" /> 
      </td> 
      <td>&nbsp;</td> 
     </table> 
     </form> 
    </div> 
    </div> 

Моя проблема заключается в данных, не быть захваченным при сохранении в базе данных. Моя функция в базе данных следующая.

function add_employee($user_id, $first_name, $middle_name, $last_name, 
         $suffix, $gender, $date_birth, $cbemail, 
         $locality_id, $home_phone, $mobile_phone) { 
    $db = load_db(); 
    $sql = "INSERT into employees (
      user_id, first_name, middle_name, last_name, 
      suffix, gender, date_birth, cbemail, 
      locality_id, home_phone, mobile_phone 
      ) VALUES (
      $user_id, $first_name, $middle_name, $last_name, 
      $suffix, $gender, $date_birth, $cbemail, 
      $locality_id, $home_phone, $mobile_phone 
      )"; 
    $result = $db->query($sql); 
} 

Да я требует POST, но я не знаю, как захватить «значение» в поле значения полей ввода.

Кнопка отправки будет перенаправлена ​​в эту строку кода.

if(isset($_POST['save_user'])){ 
    add_employee($_POST['user_id'], $_POST['first_name'], $_POST['middle_name'], $_POST['last_name'], 
       $_POST['suffix'], $_POST['gender'], $_POST['date_birth'], $_POST['cbemail'], 
       $_POST['locality_id'], $_POST['home_phone'], $_POST['mobile_phone']); 

Значит, любые идеи? Надеюсь, вы понимаете проблему.

+2

Иногда я бы хотел, чтобы была близкая причина, которая была «пожалуйста, параметризуйте». Урезал бы вопросы PHP/MySQL на 95% :) –

ответ

4

Для строк, которые должны храниться в базе данных Mysql, вам нужно использовать '' (кавычки).

Так что для строки, как $ _POST [ 'first_name'], используйте '$ _POST [' first_name ']'

Btw пытаются использовать параметризованные запросы, чтобы быть безопасным тоже

Тогда вы должны быть хорошо ,

1

Значения строк в SQL должны быть указаны. Вы демпируете данные без цитирования. Это недопустимый SQL.

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

0

Используйте это.

function add_employee($user_id, $first_name, $middle_name, $last_name, 
        $suffix, $gender, $date_birth, $cbemail, 
        $locality_id, $home_phone, $mobile_phone) { 
$db = load_db(); 
$sql = "INSERT into employees (
     user_id, first_name, middle_name, last_name, 
     suffix, gender, date_birth, cbemail, 
     locality_id, home_phone, mobile_phone 
     ) VALUES (
     '".$user_id."', '".$first_name."', '".$middle_name."', '".$last_name."', 
     '".$suffix."', '".$gender."', '".$date_birth."', '".$cbemail."', 
     '".$locality_id."', '".$home_phone."', '".$mobile_phone."' 
     )"; 
$result = $db->query($sql); 
} 
+0

все еще не работает. Нужно ли мне удалять мои комментарии вверху? но это дает мне индексную ошибку. –

+0

@AjVillalobos Ваш user_id в таблице является автоматическим приращением? –

+0

Идентификатор пользователя не является внешним ключом из другой таблицы. User_id и электронная почта от электронной почты, поэтому я использовал оператор get. –

0

Что if(isset($_POST['save_user'])){ я не вижу никакого поля с именем save_user. Вы должны изменить его на что-то еще, может быть if(isset($_POST['user_id'])){ Также вам понадобятся кавычки, как упоминания других.

+0

save_user - это имя кнопки отправки, которая вызывается как оператор if-else в последнем коде выше, я с двумя разработчиками, и они создают там собственную структуру, которая работает так. –