Сейчас я делаю простой проект, используя Raspberry Pi. У меня работает простой сервер Apache 2 с MySQL и несколькими страницами PHP / HTML. Одна из страниц ниже вызывает barcode.php. В barcode.php вы вводите User_ID в поле user_id и нажимаете Enter или кнопку поиска, и он будет искать в базе данных для этого пользователя и отображать информацию и изображение этого пользователя.
Все вышеперечисленное работает вручную и даже со сканером штрих-кода путем сканирования QR-кода. Теперь я хочу интегрировать считыватель RFID (RFID READER RC522). Когда пользователь сканирует свою карту на считывателе, я хочу, чтобы он работал как сканер штрих-кода, вводил числовой код в поле user_id и нажимал клавишу ввода, чтобы страница могла вернуть данные пользователя.
Я новичок в этом. Как я могу реализовать это в моем barcode.php? Где пользователь сканирует, и он поместит это в поле user_id.
Вот barcode.php:
<?php
// Initialize the variables
$user_id = "";
$osha = "";
$firstname = "";
$lastname = "";
$company = "";
$trade = "";
$email = "";
$picture = "";
$reg_date = "";
// PHP code to search data in a MySQL database and set it in input text
if (isset($_POST['search']))
{
// Connect to MySQL
$dbc = mysqli_connect("127.0.0.1", "root", "1234", "demodb");
// id to search
$user_id = mysqli_real_escape_string($dbc, $_POST['user_id']);
$query = "SELECT * FROM Users WHERE user_id = '$user_id' LIMIT 1";
$rs = mysqli_query($dbc, $query);
if (mysqli_num_rows($rs) == 1)
{
$row = mysqli_fetch_array($rs);
$osha = $row['osha'];
$firstname = $row['firstname'];
$lastname = $row['lastname'];
$company = $row['company'];
$trade = $row['trade'];
$email = $row['email'];
$picture = $row['picture'];
$reg_date = $row['reg_date'];
$query1 = "INSERT INTO scan (user_id, osha, firstname, lastname, company, trade, email, picture) VALUES (" .
"'" . $user_id . "'," .
"'" . mysqli_real_escape_string($dbc, $osha ) . "', " .
"'" . mysqli_real_escape_string($dbc, $firstname) . "', " .
"'" . mysqli_real_escape_string($dbc, $lastname ) . "', " .
"'" . mysqli_real_escape_string($dbc, $company ) . "', " .
"'" . mysqli_real_escape_string($dbc, $trade ) . "', " .
"'" . mysqli_real_escape_string($dbc, $email ) . "', " .
"'" . mysqli_real_escape_string($dbc, $picture ) . "')";
mysqli_query($dbc, $query1);
}
else
{
echo "Undefined ID";
}
}
?>
<!DOCTYPE html>
<html lang = "en">
<head>
<title>User Search</title>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1">
<!--===============================================================================================-->
<link rel = "icon" type = "image/png" href = "images/icons/favicon.ico"/>
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "vendor/bootstrap/css/bootstrap.min.css">
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "fonts/font-awesome-4.7.0/css/font-awesome.min.css">
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "vendor/animate/animate.css">
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "vendor/css-hamburgers/hamburgers.min.css">
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "vendor/select2/select2.min.css">
<!--===============================================================================================-->
<link rel = "stylesheet" type = "text/css" href = "css/util.css">
<link rel = "stylesheet" type = "text/css" href = "css/main.css">
<!--===============================================================================================-->
<style>
.button {
background-color: #4CAF50;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
</style>
</head>
<body>
<div class = "contact1">
<div class = "container-contact1">
<div class = "contact1-pic js-tilt" data-tilt>
<?php echo "<img src= '$picture' height='400' width='400' alt='Image not found' onerror=this.onerror=null;this.src='images/scanbarcode.png'; >" ?>
</div>
<form action = "barcode.php" method = "post">
<div class = "wrap-input1 validate-input" data-validate = "SCAN ID TO SEARCH">
<input class = "input1" type = "text" name = "user_id" placeholder = "SCAN ID TO SEARCH" autofocus>
<span class = "shadow-input1"></span>
</div>
<div class = "wrap-input1 validate-input" >
<input class = "input1" type = "text" name = "osha" placeholder = "OSHA #" value = "<?= htmlspecialchars($osha) ?>">
<span class = "shadow-input1"></span>
</div>
<div class = "wrap-input1 validate-input" >
<input class = "input1" type = "text" name = "firstname" placeholder = "First Name" value = "<?= htmlspecialchars($firstname) ?>">
<span class = "shadow-input1"></span>
</div>
<div class = "wrap-input1 validate-input" >
<input class = "input1" type = "text" name = "lastname" placeholder = "Last Name" value = "<?= htmlspecialchars($lastname) ?>">
<span class = "shadow-input1"></span>
</div>
<div class = "wrap-input1 validate-input" >
<input class = "input1" type = "text" name = "company" placeholder = "Company Name" value = "<?= htmlspecialchars($company) ?>">
<span class = "shadow-input1"></span>
</div>
<div class = "wrap-input1 validate-input" >
<input class = "input1" type = "text" name = "trade" placeholder = "Trade Name" value = "<?= htmlspecialchars($trade) ?>">
<span class = "shadow-input1"></span>
</div>
<input type = "button" onclick = "window.location='auth.php'" class = "button" value = "Admin"/>
<input type = "submit" name = "search" value = "Find" class = "button" >
</form>
</div>
</div>
<!--===============================================================================================-->
<script src = "vendor/jquery/jquery-3.2.1.min.js"></script>
<!--===============================================================================================-->
<script src = "vendor/bootstrap/js/popper.js"></script>
<script src = "vendor/bootstrap/js/bootstrap.min.js"></script>
<!--===============================================================================================-->
<script src = "vendor/select2/select2.min.js"></script>
<!--===============================================================================================-->
<script src = "vendor/tilt/tilt.jquery.min.js"></script>
<script >
$('.js-tilt').tilt({
scale: 1.1
})
</script>
</body>
</html>
Вот простой скрипт Python под названием Read.py
#!/usr/bin/env python
import RPi.GPIO as GPIO
import SimpleMFRC522
import MFRC522
import signal
continue_reading = True
reader = SimpleMFRC522.SimpleMFRC522()
def end_read(signal,frame):
print "Ctrl+C captured, ending read."
continue_reading = False
GPIO.cleanup()
signal.signal(signal.SIGINT, end_read)
MIFAREReader = MFRC522.MFRC522()
while continue_reading:
id, text = reader.read()
print(id)
print(text)
На терминале при сканировании карты он возвращает следующие данные:
pi@raspberrypi:/var/www/html/app/RFID/SPI-Py/MFRC522-python $ sudo python Read1.py
140248588882
Я хочу отправить эти числовые данные (140248588882) в поле user_id на моей странице barcode.php. Как я могу этого добиться?






Вам нужен клиент для ввода текста в веб-браузер, что не является проблемой PHP.
Обычно сканер штрих-кода действует как HID, поэтому кажется, что он набирает номер и нажимает Enter везде, где вы что-то сканируете. Вы можете либо подключить предупреждающий RFID-ридер, который действует как HID, либо имитировать события клавиатуры из python.
Это быстрый способ, но вы можете создать страницу PHP следующим образом:
<?php
print `sudo python Read1.py`;
Затем используйте JavaScript на своей главной странице PHP для опроса этого сценария PHP, и если / когда он возвращает действительный идентификатор, вставьте его во входные данные и отправьте форму.
Вероятно, вам следует сделать так, чтобы Read1.py можно было запускать без sudo (возможность PHP запускать sudo без пароля является проблемой безопасности).
Вам также нужно будет иметь дело с тайм-аутом опроса, и в этом случае JavaScript должен просто опросить снова.
Ваша проблема в том, что вам нужен файл Python для отправки штрих-кода в сценарий PHP.
В свой скрипт Python добавьте этот код:
from webbrowser import open as start_webpage
...
...
...
...
if barcode_scanned:
start_webpage(url + "?user_id = " + str(barcode))
Однако вам нужно сделать user_id параметром GET в barcode.php:
$user_id = $_GET["user_id"]
Содержимое HTML не выглядит правильно сформированным (например, перекрытие HTML-тега
formи HTML-тегаdiv). Вы можете запустить на нем валидатор WWW.