Передать данные в форму

12 3
savingleb
На сайте с 15.04.2007
Offline
368
651

Есть форма ввода данных для проверки статуса готовности, как сформировать ссылку, что бы автоматом подставлялись данные в эти формы? Например /ready/?number=12345&serial=1234

echo "";
if ($_GET['page']=='readiness'){
include($_SERVER['DOCUMENT_ROOT'] . '/readiness/updReadiness.php');
}
echo '<br/><br/>';
if(empty($_POST['number']) || empty($_POST['serial'])) {
/* float: left;margin-right: 250px; */
?>
<div class="ready_left">

<form action="/ready/" method="POST">

<input type="text" name="number" placeholder="Введите номер квитанции*" maxlength="6" size="34" style="font-size:14px;"/><br /><br />

<input type="text" name="serial" placeholder="Последние 4 символа серийного номера*" maxlength="4" size="34" style="font-size:14px;" /><br /><br />

<input type="submit" value="Проверить" style="display:block;width:298px;font-size:15px;padding:5px;text-align:center;margin-left:0px;" onclick="yaCounter45458706.reachGoal('ready'); return true;"/><br /><br /><br /><br /><br /><br /><br />
</form>
</div>
<div class="ready_right">
На данной странице можно узнать готов ли ваш аппарат, если вы уже обратились в СЦ Орбис <br><br>




</div>
<br />
<br />

<?
}
else {

// mysql connect
mysql_connect('localhost', '', '');
mysql_select_db('');
//mysql_connect('localhost', 'root', 'stuffer3');
//mysql_select_db('');
mysql_query("SET NAMES 'cp1251'");
mysql_query("SET CHARACTER SET 'utf8'");

//$id = (int)$_POST['number'];
$id = htmlspecialchars($_POST['number'],ENT_QUOTES);
//$serial = mysql_escape_string($_POST['serial']);
$serial = htmlspecialchars($_POST['serial'],ENT_QUOTES);
//$res = mysql_query("SELECT * FROM `readiness` WHERE `number` = {$id} OR `serial` = '{$serial}' LIMIT 0,1");
if($id != '' && $serial != '')
// $usl = " `number` = '" . $id . "' and `serial` like '%{$serial}'";
$usl = " `number` = '" . $id . "' and `serial` like '%{$serial}'";
elseif($id != '')
$usl = " `number` = '" . $id . "' ";
elseif($serial != '')
$usl = " `serial` = '" . $serial . "' ";
$res = mysql_query("SELECT * FROM `readiness` WHERE " . $usl . " LIMIT 0,1");
if(mysql_affected_rows() == 0) {
echo "Такой квитанции нет в базе.";
}
else {
iconv_set_encoding("internal_encoding", "CP-1251");
$rec = mysql_fetch_assoc($res);
echo "<style type='text/css'>
.hided{display:none};
</style>
<script type='text/javascript'>
function timer(){
var obj1=document.getElementById('timer_inp');
var obj2=document.getElementById('timer_text');
var obj3=document.getElementById('result');

obj1.innerHTML--;
if (obj1.innerHTML==0){
obj2.setAttribute('class','hided');
obj3.removeAttribute('class');
setTimeout(function(){},1000);
} else {
setTimeout(timer,1000);
}
}
setTimeout(timer,1000);
</script>
<div id='timer_text'><h4>Проверяется готовность изделия.<br/><br/>
Пожалуйста, подождите <span id='timer_inp'>3</span> сек.</div></h4>
<div id='result' class='hided'>
<b>Номер квитанции</b>: {$rec['number']}<br />
<b>Серийный номер</b>: {$rec['serial']}<br />
<b>Устройство</b>: ".$rec['name']."<br /><br>
<p style='font-size:2em;'>Состояние: <b>{$rec['status']}</b></p>
</div>";
}
echo "<br /><a href=\"/\">Вернуться</a><br /><br />";
}

<?php

define('DB_HOST', 'localhost');
define('DB_PORT', '3306');
define('DB_USER', '');
define('DB_PASSWORD', '');
define('DB_NAME', '');
define('WAF', $_SERVER['DOCUMENT_ROOT'] . '/readiness/');
$hostName = DB_HOST . ":" . DB_PORT;
$hConn = @mysql_connect($hostName, DB_USER, DB_PASSWORD);
$curBD = @mysql_select_db(DB_NAME);
@mysql_query("SET NAMES 'cp1251'");

if(file_exists(WAF . 'product/product.csv')){
if (($handle = fopen(WAF . 'product/product.csv', 'r')) !== FALSE) {
$stmt = 'TRUNCATE TABLE `readiness`';
$row = 1;
$str = 'INSERT INTO `readiness` (`number`,`serial`,`name`,`status`) VALUES ';
$hRes = @mysql_query($stmt,$hConn);
/*$data = fgetcsv($handle, 1000, ";");*/ /* Если в первой строке заголовки */

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$row++;
/*echo '<pre>';
echo print_r($data);
echo '</pre>';*/
$str = $str . "('" . $data[0] . "','" . $data[1] . "','" . $data[2] . "','" . $data[3] . "'),";
}
$str = substr($str,0,-1);
$hRes = @mysql_query($str,$hConn);
if($hRes == 1)
echo '<div align="right" style="color:#eee; position:absolute;">Данные загружены</div>';
else
echo '<div align="right" style="color:#eee; position:absolute;">Ошибка</div>';
fclose($handle);
}
else{
echo '<div align="right" style="color:#eee; position:absolute;">Не удалось открыть файл</div>';
}
}
else{
echo '<div align="right" style="color:#eee; position:absolute;">Файла с данными не существует</div>';
}
?>
Визовый центр в Санкт-Петербурге (https://visaspb.com/).
IL
На сайте с 20.04.2007
Offline
412
#1

Добавить value=...

https://xxxxxx.com/ready.php?n=123456&s=1234

Примерно так можно:

<input type="text" name="number" placeholder="Введите номер квитанции*" maxlength="6" size="34" style="font-size:14px;"/>

заменить на

<input value="<?=isset($_GET['n'])?htmlspecialchars($_GET['n']):''?>" type="text" name="number" placeholder="Введите номер квитанции*" maxlength="6" size="34" style="font-size:14px;"/>

    <input type="text" name="serial" placeholder="Последние 4 символа серийного номера*"  maxlength="4" size="34" style="font-size:14px;" />

заменить на

<input value="<?=isset($_GET['s'])?htmlspecialchars($_GET['s']):''?>" type="text" name="serial" placeholder="Последние 4 символа серийного номера*" maxlength="4" size="34" style="font-size:14px;" />
savingleb
На сайте с 15.04.2007
Offline
368
#2

Заменил, по ссылке /ready/?n=123456&s=1234 не работает.

S
На сайте с 13.10.2014
Offline
148
#3

а оно, часом, не кэшируется в статику?

проверьте, может дело в этом?

savingleb
На сайте с 15.04.2007
Offline
368
#4
silicoid:
а оно, часом, не кэшируется в статику?

Добавил в исключение, но вряд ли в этом дело.

S
На сайте с 30.09.2016
Offline
459
#5

Этот кусок замените

if(empty($_POST['number']) || empty($_POST['serial'])){

$number = '';
$serial = '';
if(!empty($_GET['number']) && !empty($_GET['serial'])){
$number = $_GET['number'];
$serial = $_GET['serial'];
}
?>
<div class="ready_left">

<form action="/ready/" method="POST">

<input type="text" name="number" value="<?=$number?>" placeholder="Введите номер квитанции*" maxlength="6" size="34" style="font-size:14px;"/><br /><br />

<input type="text" name="serial" value="<?=$serial?>" placeholder="Последние 4 символа серийного номера*" maxlength="4" size="34" style="font-size:14px;" /><br /><br />

<input type="submit" value="Проверить" style="display:block;width:298px;font-size:15px;padding:5px;text-align:center;margin-left:0px;" onclick="yaCounter45458706.reachGoal('ready'); return true;"/><br /><br /><br /><br /><br /><br /><br />
</form>
</div>
<div class="ready_right">
На данной странице можно узнать готов ли ваш аппарат, если вы уже обратились в СЦ Орбис <br><br>
</div>
<br />
<br />

<?
}

Собственно, практически то же самое, но с нюансами. ;)

---------- Добавлено 02.03.2020 в 12:01 ----------

savingleb:
вряд ли в этом дело.
Дело в том, что гет-параметр s используется для поиска по сайту.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
savingleb
На сайте с 15.04.2007
Offline
368
#6
Sitealert:
Собственно, практически то же самое, но с нюансами.

Поменял. По ссылке /ready/?number=831784&serial=1824 ничего не показывает :)

S
На сайте с 30.09.2016
Offline
459
#7

Весь кусок кода поменяли? То, что болдом – это не я выделил, это из Вашего кода перекочевало. :(

savingleb
На сайте с 15.04.2007
Offline
368
#8
Sitealert:
Весь кусок кода поменяли? То, что болдом – это не я выделил, это из Вашего кода перекочевало. :(

Поменял, работает, спасибо! По ссылке подставляются в форму нужные значения, осталось последнее, чтобы срабатывала кнопка проверить из ссылки 🍻

IL
На сайте с 20.04.2007
Offline
412
#9

Браузер иногда может при переходе на страницу старое значение подставлять.

Сейчас при открытии страницы всё сработало корректно..

---------- Добавлено 02.03.2020 в 12:29 ----------

Осталось безопасности добавить...

https://orbis.spb.ru/ready/?number=8%22%3E%20%3Cscript%3Ealert(555)%3C/script%3E2731784&serial=1824

---------- Добавлено 02.03.2020 в 12:51 ----------

Sitealert, зря htmlspecialchars-ы снёс..

заменить 2 строки после

if(!empty($_GET['number']) && !empty($_GET['serial'])){


$number = htmlspecialchars($_GET['number']);
$serial = htmlspecialchars($_GET['serial']);
S
На сайте с 30.09.2016
Offline
459
#10
savingleb:
чтобы срабатывала кнопка проверить из ссылки

А может быть, тогда с самого начала задача не так была сформулирована? ;)

В изначальном коде поменять $_POST на $_REQUEST – и всё.

---------- Добавлено 02.03.2020 в 12:54 ----------

ivan-lev:
Осталось безопасности добавить...
Паапрашу пример, когда будет серьёзно нарушена безопасность. 🙄
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий