2015-01-12 4 views
0

В моей таблице у меня есть разные запросы, каждый со своим собственным ссылочным номером. пользователь может видеть количество запросов на странице, но я хочу, чтобы пользователь мог щелкнуть по каждому запросу отдельно и перейти на новую страницу, чтобы просмотреть конкретные детали этого запроса.PHP/MYSQL Echo Mysql Данные с гиперссылкой на следующую страницу?

Я пытаюсь повторить ссылку в гиперссылке при нажатии на запрос и на следующей странице, когда я запустил свой запрос, чтобы получить имя и т. Д. Этого запроса, будет отображаться только информация, соответствующая этому ссылочному номеру, т. Е. 'SELECT * WHERE reference = $row['reference'].

Однако я не уверен, как это сделать, также я обеспокоен тем, что это безопасно, если мой запрос проверяет ссылку в моем URL-адресе, то есть mypage.php?reference=1234, что нужно, чтобы пользователь просто вручную вводил текст в url с другим ссылочным номером?

'mypage.php?reference=2468 

пользователь должен только быть в состоянии просмотреть страницу, если они на самом деле нажал на запрос, они никогда не должны быть в состоянии ввести его непосредственно в URL, так как это создает угрозу безопасности.

Могу ли я потенциально маскировать ссылку на строку? и эхо из mypage.php?reference=$someString

page1.php

<div class="results_area"> 
       <h44>Existing Supplier Request's</h44> 
    <?php 
    $conn = new mysqli($host, $username, $password, $db_name); 
    // Check connection 
    if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); } 
    $sql = "select * from new_supplier_request where status!= 'complete' AND action_taken='actioned'"; 
       $result = $conn->query($sql); 
       if ($result->num_rows > 0) { 
       echo '<div class="table_header"><p>Request By</p><p>Date Requested</p><p>Status</p><p>Supplier Name</p><p>Description</p><p>Action</p></div>'; ?> 
       </div> 

       <div class="results_area"><?php 
       while($row = $result->fetch_assoc()) { 


       echo '<div class="request"><a href="ns_application.php?ns_request='.$row['reference'].'/">'; 

mypage.php

$reference = $row['reference']; 

<?php 
$conn = new mysqli($host, $username, $password, $db_name); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); } 
$sql = "select * from new_supplier_request where status!= 'complete' WHERE reference = $reference Limit 1"; 

$result = $conn->query($sql); 
      if ($result->num_rows > 0) { 
      while($row = $result->fetch_assoc()) { 
      echo '<h44>New Supplier Request: &nbsp;' .$reference. ' </h44><br>'; 
      echo 'The name of this supplier is, '.$reference['name'].'; 
} } ?> 
      </div> 
+0

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

ответ

0
You can use JavaScript to solve this problem. 
I don't think that this will be 100% secure but actually it's more secure way than you are using now. 
echo "<div .... onclick='showuniquereference('".$row['reference']."')'>"."</div>"; 

And Function like this 
function showuniquereference(code) 
{ 
var reference = code; 
var form = document.createElement("form"); 
form.method = "POST"; 
form.action = "mypage.php"; 
var input = document.createElement("input"); 
input.name = "reference"; 
input.value = reference; 
input.type = "hidden"; 
form.appendChild(input); 
document.body.appendChild(form); 
form.submit(); 
} 

You can use this posted data to show unique reference to users. 
Смежные вопросы