Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建类似Pastebin、Imgur、Youtube等的URL。?_Php_Mysql_Wordpress_.htaccess_Mod Rewrite - Fatal编程技术网

Php 如何创建类似Pastebin、Imgur、Youtube等的URL。?

Php 如何创建类似Pastebin、Imgur、Youtube等的URL。?,php,mysql,wordpress,.htaccess,mod-rewrite,Php,Mysql,Wordpress,.htaccess,Mod Rewrite,我正在创建一个站点(使用PHP和MySQL),它接受用户输入,生成一个随机链接,并使用用户在生成的链接上的输入来显示内容 最接近现实生活的例子是——你在主页上输入文本,它会生成一个随机链接(例如,然后你输入的文本会永久显示在生成的链接上) 我似乎永远都无法解决这个问题。我已经设法解决了问题的不同部分(我想),但我似乎无法让它完全发挥作用 关键事实 用户输入需要可用于生成的链接 PHP文件run.PHP是我用来显示内容/操纵用户输入的文件,因此需要在生成的链接上提供(除非有其他方法) 我有一个M

我正在创建一个站点(使用PHP和MySQL),它接受用户输入,生成一个随机链接,并使用用户在生成的链接上的输入来显示内容

最接近现实生活的例子是——你在主页上输入文本,它会生成一个随机链接(例如,然后你输入的文本会永久显示在生成的链接上)

我似乎永远都无法解决这个问题。我已经设法解决了问题的不同部分(我想),但我似乎无法让它完全发挥作用

关键事实

  • 用户输入需要可用于生成的链接
  • PHP文件run.PHP是我用来显示内容/操纵用户输入的文件,因此需要在生成的链接上提供(除非有其他方法)
  • 我有一个MySQL数据库,目前有/存储3列:ID(integer,自动递增)、userinput(varchar,设置为unique)和pageurl(varchar,也设置为unique)
  • 该站点正在使用WordPress,但这并不重要,因为我直接处理PHP/htaccess文件
我尝试/设法做的事情:


  • 我可以通过
    为url生成一个随机字符串。这可以放在
    中。你就快到了,
    重写规则
    就是方法

    在apache配置中使用此选项:

    RewriteRule ^([0-9a-zA-Z]+)$ run.php?randurl=$1 [L]
    
    在您的html页面中:

    <form action="/run.php" method="POST">
      Userinput: <input type="text" name="userinput">
    

    感谢您给出如此清晰的答案。我在理解
    if/else if
    语句中包含的内容时有点困难。到目前为止,我有
    userinput
    和一个随机
    pageurl
    (以domain.com/xyz的形式从表单中发布并插入到数据库中。因此,在我的数据库中,我有一行值(例如
    ID:5,userInput:Hello!,pageurl:domain.com/abcxyz
    )。但是,每当我访问它时,该随机页面url仍然是404&该表单仍然重定向到
    domain.com/run.php
    ,而不是新生成的缩短url。当用户添加新的userinput时,您将在run.php中收到它,并带有变量
    $\u POST['userinput']
    ,因此,在
    if
    语句中,您应该在数据库中添加新条目。当用户打开
    domain.com/xyz
    时,他实际上会打开
    domain.com/run.php?pageurl=xyz
    ,因此在
    else
    语句中,您应该读取数据库并显示相应的
    用户输入
    …对此表示歉意他反应很慢。我尝试过这样做,但当我试图在
    if/else
    语句中创建数据库条目时,总是会出现错误。我不确定您是否注意到我犯的任何明显错误?如果您不提及您遇到的错误,将很难帮助您…这只是给了我一个内部服务器错误).但是,这一部分现在已经解决了(不再出现错误)。我已经更新了代码(这里的整个PHP代码:)现在它已经非常接近工作状态了。当表单提交时,它成功地重定向到一个随机URL,但是,当它到达该随机URL时,它仍然会404。所以我假设run.php或userinput没有被分配到该随机URL?
    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");
    }