кодирование URL, чтобы получить его в php - PullRequest
0 голосов
/ 07 марта 2019

Я создаю своего рода веб-приложение car-configurator.

Я хочу получить уникальный флаг (строку), представляющий URL, который я буду хранить в БД, а затем отправлю егопочта для людей, использующих мое приложение.

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

Основная проблема заключается вчто я супер новичок в PHP, и я не знаю, как автоматически генерировать небольшую строку, связанную с переменной (переменная - это URL страницы).

Короче говоря, мне нужно сделать что-то вроде этого:

$url = "www.some-domain.com?foo=1&foo=2&foo=3&foo=4";

Мне нужно преобразовать этот $url в нечто подобное xr0314r.И эта строка должна быть уникальной и автоматически сгенерированной.

Кто-то может передать мне действительный пример?или поставить меня в правильном направлении?

Заранее спасибо!

1 Ответ

2 голосов
/ 07 марта 2019

Из того, что я понял, на самом деле здесь не происходит никакого en / decoding. Похоже, вы просто хотите получить флаг для полного URL-адреса, сохранить его в БД и позволить пользователю позже ввести этот флаг в форму для извлечения (и предположительно перехода) сохраненного URL-адреса.

Учитывая это, сначала давайте сгенерируем строку. Есть несколько способов сделать это, но вот простой пример:

function derive_flag() {
    $flag_len = 6;
    $chars = 'abcdefghijklmnopqrstuvwxyz1234567890';
    $ret = '';
    //iteratively build the flag, with a random character from $chars
    for($f=0; $f<$flag_len; $f++) $ret .= substr($chars, rand(0, strlen($chars)-1), 1);
    return $ret;
}
echo derive_flag(); //e.g. "ax9sb9"

Затем вы сохраняете это в своей БД для текущего URL. Таким образом, ваша таблица поиска может называться urls и выглядеть следующим образом:

-------------------
| id | flag | url |
-------------------

и быть заполненным как

---------------------------------
| id | flag   | url             |
---------------------------------
| 1  | ah69vm | https://foo.bar |
---------------------------------

Тогда, когда пользователю нужно извлечь URL из флага, у вас просто есть форма, которая ищет в этой БД. Для этого примера я предполагаю, что flag отправляется в поле POST из формы. Очевидно, что вам нужно выполнить проверку формы, чтобы убедиться, что флаг был отправлен.

//$db is your DB connection via new mysqli()
if ($stmt = $db->prepare('SELECT url FROM urls WHERE flag = ?')) {
    $stmt->bind_param('s', $_POST['flag']);
    $stmt->execute();
    $stmt->bind_result($url);
    $stmt->fetch();
    //URL now lives in $url - print it out, go to it, whatever
    $stmt->close();
}

(К вашему сведению, если этот код БД выглядит странно, это пример использования подготовленных операторов . Это хороший метод для безопасных транзакций БД, например, чтобы избежать внедрения SQL.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...