Member 13774922 Ответов: 2

Php/mysql : не удается работать с сессией. Ценность не сохраняется


Поэтому я пытаюсь создать две страницы: одну, которая передает значение, и другую, которая получает его и задает запрос на основе условия. Таким образом, на первой странице пользователь выбирает идентификационный номер из списка и затем нажимает кнопку Отправить.. Затем на второй странице. таблицы должны быть показаны с этим конкретным идентификатором, однако всякий раз, когда я попадаю на 2-ю страницу, Я получаю следующую ошибку (для страницы 2):

>обратите внимание: неопределенный индекс: R_ID

Что я уже пробовал:

Вот код для моей первой страницы:-

<?php
    SESSION_START();
      if (isset($_POST['submit'])) {
    	$No=$_POST['No'];
    	$con = mysql_connect("localhost","root","");
    if (!$con)
    {
    die('Could not connect: ' . mysql_error());
    }
    
    mysql_select_db("garden", $con);
    	    $_SESSION['R_ID']=$No;
      }
      
      //$result = mysqli_query($db, "SELECT * FROM recipe_img WHERE RecipeID='$var_value'");
    ?>
    <html>
    <head>
    </head>
    <body>
    <div id="content">
    <p></p>
    <p> select by ID: </p>
    <select name="No" id="No">
    	<option value="No"></option>
    		<?php
    mysql_connect('localhost', 'root', '');
    mysql_select_db('garden');
    
    $sql = "SELECT R_ID FROM recipe";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
    	$name=$row['R_ID'];
        echo "<option value='".$row['R_ID'] ."'>". $row['R_ID'] ."</option>";
    }
    ?>
    </select>
    <div>
    <input type="submit" name="submit" value="submitting">
    </div>
    </div>
    </body>
    </html>


а вот и вторая страница:
<?php
            session_start();
            $db_host = 'localhost'; 
            $db_user = 'root'; 
            $db_pass = ''; 
            $db_name = 'garden'; 
            $con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
            if (!$con) {
            	die ('Failed to connect to MySQL: ' . mysqli_connect_error());	
            }
            $RID=$_SESSION['R_ID'];
            $Qsql = "SELECT * FROM recipe WHERE recipe.R_ID='$RID'";
            $query = mysqli_query($con, $Qsql);
            if (!$query) {
            	die ('SQL Error: ' . mysqli_error($con));
            }
            ?>
     <html>    
        <body>
            	<h1>Table</h1>
            	<table class="data-table">
            			<tr>
            				<th>Name</th>
            				<th>Cost</th>
            				<th>Step</th>
            			</tr>
            		</table>
            		<?php
            		while ($row = mysqli_fetch_array($query))
            		{
            			echo '<tr>
            					<td>'.$row['Name'].'</td>
            					<td>'.$row['Cost'].'</td>
            					<td>'.$row['Step'].'</td>
            				</tr>';
            		}?>
    
            	</table>
            </body>
            </html>

2 Ответов

Рейтинг:
2

Patrice T

$Qsql = "SELECT * FROM recipe WHERE recipe.R_ID='$RID'";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]


Рейтинг:
1

User 7429338

Могут ли эти две страницы получить доступ к одному и тому же файлу cookie? Например, если они находятся на разных доменах или если файлы cookie заблокированы браузером, ваш сеанс не будет сохранен.