В приведенном ниже сценарии вы увидите значение, представленное в форме с названием «shorturl». В конечном итоге я хотел бы взять это значение и использовать его для создания уникального URL-адреса, который отображает все отправленные данные из формы.
Вот форма, в которую пользователь отправляет данные:
<html>
<body>
<p>Required fields are <b>bold</b></p>
<form action="contact.php" method="post">
<p><b>Author's Name:</b> <input type="text" name="author" /><br />
<p>Company Name: <input type="text" name="company" /><br />
<p>Address:<br /><textarea name="address" rows="5" cols="40"></textarea></p>
<p>Phone Number: <input type="text" name="phone" /><br />
<b>Title:</b> <input type="text" name="title" /><br />
<p><b>One Word Description:</b> <input type="text" name="shorturl" /><br />
<p><b>Full Description:</b><br />
<textarea name="comments" rows="10" cols="40"></textarea></p>
<p><input type="submit" value="submit"></p>
<p> </p>
</form>
</body>
</html>
Следующий бит кода - это страница contact.php, которая выведет пользовательские данные:
<?php
/* Check all form inputs using check_input function */
$author = check_input($_POST['author'], "Enter your name");
$company = check_input($_POST['company']);
$address = check_input($_POST['address']);
$phone = check_input($_POST['phone']);
$shorturl = check_input($_POST['shorturl'], "Provide a single word description");
$title = check_input($_POST['title'], "Write a title");
$comments = check_input($_POST['comments'], "Provide a full description");
/* Functions we used */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<b>Please correct the following error:</b><br />
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
<head>
<title><?php echo $_POST['title']; ?></title>
</head>
<body>
<p>
<b><?php echo $_POST['title']; ?></b><br>
Created by:<br>
<?php echo $_POST['author']; ?><br>
<?php echo $_POST['company']; ?><br>
Contact: <br>
<?php echo $_POST['phone']; ?><br>
<?php echo $_POST['address']; ?><br>
Flyer Description: <br>
<?php echo $_POST['comments']; ?><br>
</p>
</body>
</html>
Как вы увидите, если вы запустите эту форму, функция довольно проста. Здесь мне нужна помощь. В первоначальном виде берется значение shorturl. Функция значения shorturl выглядит следующим образом:
Если бы эта форма была размещена на examplesite.com, то мне бы очень хотелось, чтобы созданная форма была доступна с отправленными ответами на examplesite.com/shorturl
.
Прежде всего, как мне проверить, что это на самом деле одно слово через PHP? Если пользователь отправляет значение shorturl как «Дом», тогда мне нужно, чтобы форма возвращала значение как «истина», но если пользователь отправляет «Большой дом», тогда значение равно «Ложь», и ему нужно изменить значение на что-то, что приемлемо, например, как "BigHouse"
Во-вторых, мне нужно убедиться, что значение shorturl уникально для сайта. Другими словами, после использования shorturl это значение необходимо отправить в базу данных MySQL, чтобы оно не было реплицировано другим пользователем. Чтобы продолжить наш пример, если у кого-то уже есть значение «House» в качестве значения shorturl, тогда полный URL-адрес examplesite.com/House уже занят. Затем, если новый пользователь приходит и пытается использовать «Дом», отправка выдаст сообщение об ошибке, в котором говорится, что имя занято.
И, наконец, как мне получить всю эту информацию для автоматического создания уникальной веб-страницы с результатами формы? Для примера давайте продолжим examplesite.com/House
Прямо сейчас, когда пользователь отправляет форму, данные отображаются на examplesite.com/contact.php. Как создать URL-адрес, который будет отображать данные формы и быть уникальным в соответствии с определением shorturl и быть доступным для просмотра стороннему посетителю сайта без отправки новых данных?
Wow. Я надеюсь, что все имеет смысл.
Я знаю, что здесь есть несколько вопросов, так что, если вы можете помочь только одним шагом, это нормально. Если вы можете решить всю эту проблему, тогда у вас будет больше сил:)
Я провел немало исследований по этому вопросу, и я думаю, что первые два вопроса должны быть решены с помощью PHP, но третий может включать какую-то функцию mod_rewrite. Я не могу отблагодарить вас за то, что вы продвинулись так далеко с моим запросом, и большое спасибо, если вы можете предоставить решение.