Php 如何创建类似Pastebin、Imgur、Youtube等的URL。?
我正在创建一个站点(使用PHP和MySQL),它接受用户输入,生成一个随机链接,并使用用户在生成的链接上的输入来显示内容 最接近现实生活的例子是——你在主页上输入文本,它会生成一个随机链接(例如,然后你输入的文本会永久显示在生成的链接上) 我似乎永远都无法解决这个问题。我已经设法解决了问题的不同部分(我想),但我似乎无法让它完全发挥作用 关键事实Php 如何创建类似Pastebin、Imgur、Youtube等的URL。?,php,mysql,wordpress,.htaccess,mod-rewrite,Php,Mysql,Wordpress,.htaccess,Mod Rewrite,我正在创建一个站点(使用PHP和MySQL),它接受用户输入,生成一个随机链接,并使用用户在生成的链接上的输入来显示内容 最接近现实生活的例子是——你在主页上输入文本,它会生成一个随机链接(例如,然后你输入的文本会永久显示在生成的链接上) 我似乎永远都无法解决这个问题。我已经设法解决了问题的不同部分(我想),但我似乎无法让它完全发挥作用 关键事实 用户输入需要可用于生成的链接 PHP文件run.PHP是我用来显示内容/操纵用户输入的文件,因此需要在生成的链接上提供(除非有其他方法) 我有一个M
- 用户输入需要可用于生成的链接
- PHP文件run.PHP是我用来显示内容/操纵用户输入的文件,因此需要在生成的链接上提供(除非有其他方法)
- 我有一个MySQL数据库,目前有/存储3列:ID(integer,自动递增)、userinput(varchar,设置为unique)和pageurl(varchar,也设置为unique)
- 该站点正在使用WordPress,但这并不重要,因为我直接处理PHP/htaccess文件
- 我可以通过
为url生成一个随机字符串。这可以放在中。你就快到了,
就是方法 在apache配置中使用此选项:重写规则
在您的html页面中:RewriteRule ^([0-9a-zA-Z]+)$ run.php?randurl=$1 [L]
<form action="/run.php" method="POST"> Userinput: <input type="text" name="userinput">
感谢您给出如此清晰的答案。我在理解
语句中包含的内容时有点困难。到目前为止,我有if/else if
和一个随机userinput
(以domain.com/xyz的形式从表单中发布并插入到数据库中。因此,在我的数据库中,我有一行值(例如pageurl
)。但是,每当我访问它时,该随机页面url仍然是404&该表单仍然重定向到ID:5,userInput:Hello!,pageurl:domain.com/abcxyz
,而不是新生成的缩短url。当用户添加新的userinput时,您将在run.php中收到它,并带有变量domain.com/run.php
,因此,在$\u POST['userinput']
语句中,您应该在数据库中添加新条目。当用户打开if
时,他实际上会打开domain.com/xyz
,因此在domain.com/run.php?pageurl=xyz
语句中,您应该读取数据库并显示相应的else
…对此表示歉意他反应很慢。我尝试过这样做,但当我试图在用户输入
语句中创建数据库条目时,总是会出现错误。我不确定您是否注意到我犯的任何明显错误?如果您不提及您遇到的错误,将很难帮助您…这只是给了我一个内部服务器错误).但是,这一部分现在已经解决了(不再出现错误)。我已经更新了代码(这里的整个PHP代码:)现在它已经非常接近工作状态了。当表单提交时,它成功地重定向到一个随机URL,但是,当它到达该随机URL时,它仍然会404。所以我假设run.php或userinput没有被分配到该随机URL?if/else
if (isset($_POST['userinput'])) { // user adds a new input // insert into database (userinput, randurl) values ('".$_POST['userinput']."', '".$randGen."') // redirect the user to the new short URL page: header('Location: domain.com/'.$randGen); } else if (isset($_GET['randurl'])) { // user wants to access the short URL // retrieve userinput from database: // select userinput from mydatabasename where randurl = 'domain.com/'.$_GET['randurl'] $sql = "SELECT userinput FROM articles WHERE randurl = '".$_GET[randurl]."'"; $result = $conn->query($sql); if ($result) { if ($row = $result->fetch_object()) { // echo select result in the page echo($row['userinput']); } else echo("error: fetch_object"); $result->close(); } else echo("error: query"); }