2013-09-25 4 views
-1

Надеюсь, что я правильно описал свою проблему. Я создал базу данных для столовой. Это имеет следующие таблицы: заказы, члены ISA-менеджер и серверы, продукты и категории. В табличных заказах я должен вставлять такие функции, как название, количество, дату и время, сумма и имя пользователя соответствующего сервера. Мне удалось это сделать через php в моих файлах, опубликованных ранее на этом форуме (перейдите по ссылке: Insert data from textbox and checkbox into database).Проблемы с неопределенным индексом в php/mysql

Веб-среда до сих пор состоит из: а) index.php, members.php (эти файлы отвечают за логином и аутентификации любого вида пользователя, либо администратор или служит б) addorder_form. .php и addorder.php в виде формы заказа и вставки данных заказа в базу данных. Я не могу заставить мою систему печатать имя пользователя каждого сервера для каждого заказа. я пытался что-то вроде этого, но я «ве получил ошибку неопределенного индекса пользователя:

<?php 
    session_start(); 
      include_once("buzzcafe_fns.php"); 
      include_once("members.php"); 
      do_html_header(""); 

    $conn = mysql_connect("localhost", "root", ""); 
    $db=mysql_select_db("buzzcafe" ,$conn); 
    db_connect(); 
    if (isset($_SESSION['username']){ 
    if (isset($_POST['products'])) { 
     if (isset($_POST['quantity'])) { 
      foreach($_POST['products'] as $key => $products){ 
       $quantity = isset($_POST['quantity'][$key])? $_POST['quantity'][$key]:'Not selected'; 
       date_default_timezone_set('Europe/Athens'); 
       $date = date('Y-m-d H:i:s'); 
       $message[] = $products.' - x'.$quantity; 
       $insertOrder = mysql_query("INSERT INTO orders (datetime,title,quantity,username) VALUES('".$date."','".$products."','".$quantity."', '".$_SESSION['username']."')")or die(mysql_error()); 
       echo $_SESSION['username']; 
       } 
      } 
      echo implode(',', $message); 
      echo "<br/>"; 
      echo "<br />Record inserted"; 
      echo "<br/>"; 
      echo $date; 
     } 
     else { echo "You did not choose a quantity."; } 
    }else { echo "You did not choose any product."; } 
    } 
    ?> 

Почему имя пользователя неопределенные?

Часть members.php:

<?php 
    if (isset($_POST['username']) && isset($_POST['password'])) { 
     $username = $_POST['username']; 
     $password = $_POST['password']; 

     if ((!$username) || (!$password)) { 
      do_html_header(''); 

      echo '<h3 style="color:#800000;">Please fill in both fields</h3><br><br></br></br>'; 
      display_login_form(); 
     }  
     else { 
     $sql = mysql_query('SELECT * FROM members WHERE username="'.$_POST['username'].'" AND password=sha1("'.$_POST['password'].'")') or die(mysql_error()); 
     $login_check_member = mysql_num_rows($sql); 
     if($login_check_member > 0) { 
       while($row = mysql_fetch_array($sql)) { 
        $role = $row["role"]; 
        $_SESSION['role'] = $role; 
        $us = $row["username"]; 
        $_SESSION['username'] = $us; 
        $username = $_SESSION['username']; 
       } 
      } 

я включить этот файл в моем файле addorder.php.

+0

установлен ли Вы имя пользователя в сессии в любом месте? – Darren

+0

Пожалуйста, не используйте функции mysq_ *, поскольку они устарели. Подумайте об использовании [PDO] (http://be1.php.net/pdo) или [MySQLi] (http://php.net/manual/en/book.mysqli.php) – DarkBee

+0

** Построение SQL-операторов с внешним переменные, вы полностью раскрываете атаки SQL-инъекций. ** Кроме того, любые входные данные с одинарными кавычками в нем, такие как имя «O'Malley», взорвут ваш SQL-запрос. Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. У http://bobby-tables.com/php есть примеры, чтобы вы начали, и [этот вопрос] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in- php) имеет много примеров. –

ответ

0

Возможно, это не определено?

Кажется, люди немного больше обеспокоены вашим SQL, чем чем-либо, но это может помочь вам в актуальном вопросе.

Бросьте это перед ними гнездовые условия:

if (defined($_SESSION['username'])) { 
    echo 'Username is defined!'; 
} 
else { 
    die('Username is undefined!'); 
} 
+0

Я сделал это, и, как вы сказали, не определено. – Suspicius

+2

Так что это говорит вам? Где-то, где бы вы ни определяли, он либо установлен как NULL, FALSE или вообще не определен. Я предлагаю поиграть с этим куском кода ... Переместите его туда, где вы определяете переменные. Я почти уверен, что вы это выясните. – snh

+0

Проблема решена. Это делалось с session_start(); использовать. – Suspicius

Смежные вопросы