gpt4 book ai didi

php - 需要帮助获取用户提交的值并从 PHP 表单生成唯一的 URL

转载 作者:行者123 更新时间:2023-11-29 00:55:20 24 4
gpt4 key购买 nike

在下面的脚本中,您将看到一个以标题为“shorturl”的形式提交的值。最后,我想获取该值并使用它生成一个唯一的 URL,该 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 值提交为“House”,那么我需要表单将值返回为 true,但如果用户提交“Big House”,则该值为 false,他们需要将值更改为可接受的值,例如作为“大房子”

其次,我需要验证 shorturl 值对于站点是唯一的。换句话说,一旦使用了 shorturl,该值就需要发送到 MySQL 数据库,这样它就不会被其他用户复制。继续我们的例子,如果有人已经将“House”作为他们的 shorturl 值,那么 examplesite.com/House 的完整 URL 已经被采用。然后,如果有新用户尝试使用“House”,则提交将产生一条错误消息,指出该名称已被占用。

最后,我如何获取所有这些信息以自动生成包含表单结果的唯一网页?例如,让我们继续 examplesite.com/House现在,当用户提交表单时,数据会显示在 examplesite.com/contact.php 上。我如何生成一个 URL,该 URL 将显示表单数据并根据 shorturl 的定义是唯一的,并且无需提交新数据即可被第三方站点访问者查看?

哇。我希望一切都有意义。

我知道这里有几个问题,所以如果您只能协助解决一个步骤就好了。如果你能解决这整个问题,那么你会更有力量 :)

我对此进行了大量研究,我认为前两个问题应该可以用 PHP 解决,但第三个问题可能涉及某种 mod_rewrite 函数。非常感谢您完成我的查询,非常感谢您能提供解决方案。

最佳答案

这应该可以很好地验证 $shorturl:

if (preg_match('/[^a-z0-9]/i', $shorturl)) {
// $shorturl contains characters other than just numbers or
// letters such as a tab, space, or special chars you probably don't want
}

至于确保 url 是唯一的:

if (!mysql_num_rows(mysql_query("SELECT id FROM contact WHERE url = '$shorturl' LIMIT 1")) {
// it is unique, yay
}

然后您将像这样插入 url:

mysql_query("INSERT INTO contact (url) VALUES ('$shorturl')");

至于自动生成内容,应该没有那么棘手。首先,您需要将所有表单数据插入数据库,我会在插入 url 的同时执行此操作。要动态检索数据(使用如此短的 url),您需要对 .htaccess 进行少量修改。

这是一个示例,说明您的 .htaccess 可能看起来像用户能够访问 domain.com/shorturl,而正在运行的实际脚本(以及他们将看到的内容)位于 domain.com/contact。 php?short_url=shorturl

RewriteEngine on  

# don't rewrite if the file exists
RewriteCond %{REQUEST_FILENAME} !-f
# don't rewrite if the directory exists
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ contact.php?short_url=$1

此时剩下的只是在 contact.php 中将 GET 变量捕获为 $_GET['short_url'](或者您希望此脚本驻留的任何位置,只要您相应地更改 RewriteRule)并返回其余部分您使用数据库查询捕获的信息,可能类似于:

$short_url = mysql_real_escape_string($_GET['short_url']);

$sql = "SELECT * FROM contact WHERE url = '$short_url'";
$user_data = mysql_fetch_array(mysql_query($sql));

extract($user_data);
// with extract, all of $user_data's keys are now variables and their respective values
// are contained within those variables
// $user_data['company'] now becomes simply $company, for example

echo "Company: $company";
// etc...

希望对您有所帮助:)

关于php - 需要帮助获取用户提交的值并从 PHP 表单生成唯一的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6367601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com