我正在创建一个网站(使用PHP和MySQL),它接受用户输入,生成随机链接,并在生成的链接上使用该用户输入来显示内容。
最近的现实生活示例是http://pastebin.com/ - 您在主页上输入文字输入,它会生成随机链接(例如http://pastebin.com/2hf4Dtv7,然后您输入的文字会永久显示在该页面上生成的链接。
我一直坚持这个问题似乎永远。我已经设法让问题的不同部分得到解决(我认为),但我似乎无法将其完全解决。
关键事实
我尝试/设法做的事情:
<?php echo $randGen ?>
为网址生成随机字符串。这可以放入<form action="<?php echo $randGen ?>" method="POST">
- 这样可以打开一个标签到 domain.com/xyz ,但404s&amp; run.php 未分配给生成的链接(我不确定输入值是否为)。POST
和GET
个方法。输入数据不敏感,因此不是一个大问题。RewriteRule ^([0-9a-zA-Z]+)$ run.php?userinput=$1 [NC,L]
,以及尝试使用[QSA]
&amp; &%{QUERY}
保持用户输入,但发现自己远离我的深度。答案 0 :(得分:0)
你快到了,RewriteRule
是可行的方法。
在你的apache配置中使用它:
RewriteRule ^([0-9a-zA-Z]+)$ run.php?randurl=$1 [L]
这在你的html页面中:
<form action="/run.php" method="POST">
Userinput: <input type="text" name="userinput">
然后你只需要在run.php中使用变量$_GET['randurl']
和$_POST['userinput']
:
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");
}