【问题标题】:Go to url based on mySQL query根据 mySQL 查询转到 url
【发布时间】:2023-03-09 13:31:01
【问题描述】:

好的,所以我正在制作这个网站(有点像 bitly 或 goo.gl),您可以在其中输入链接并缩短链接,但还有一些额外的好处。
现在我只是托管一个本地 mysql 服务器进行测试,它的设置方式是,一旦输入一个缩短链接,就会生成一个随机的 3 位代码并将其连同它的链接一起放入 mysql 表中。

当你在网站上输入代码时,它会去mysql表,找到代码,找到对应的链接,理论上应该是带回那个链接,然后打开它。

这就是问题所在。它根本行不通。我不知道这是html页面的问题,还是脚本的问题,但我不知道。

我对 PHP(用于查询脚本的语言)不是很有经验,所以我不确定如何进行故障排除。

我希望这里有人可以提供一些关于为什么它可能不起作用的见解。
我所知道的是,当我单击“Go”按钮时,它会打开 php 代码而不是运行它,我不知道如何修复它。

由于我不知道到底是什么问题,这里是html和php代码。

HTML: (为方便起见,只剩下身体。其他地方没有什么有趣的)

  <body>
<center><form action="sql_query.php" method="post">
  <input class="enjoy-css" placeholder="" maxlength="3" name="var" type="text" />
  <script type="text/javascript" script-name="josefin-sans" src="http://use.edgefonts.net/josefin-sans.js"></script>
  <input type="submit" class="enjoy-css_1" value="Go" src="sql_query.php" />
  <script type="text/javascript" script-name="josefin-sans" src="http://use.edgefonts.net/josefin-sans.js"></script>
</form></center>

PHP:

<?php
$servername = "localhost";
$username = "nimbleadmin";
$password = "admin";
$dbname = "nimble";
$var = $_POST['var'];

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$result = mysql_query("SELECT id, nimblecode, urlredirect, messageredirect     FROM linker WHERE nimblecode = '" + $var + "'");
if (!$result) {
  echo 'Could not run query: ' . mysql_error();
  exit;
}
$row = mysql_fetch_row($result);
echo "id: " . $row["nimblecode"]. " //// URL: " . $row["urlredirect"]. "     //// Message: " . $row["messageredirect"]. "<br>";
if ($row["messageredirect"]. == null) {
  header('Location: ' . $row["urlredirect"]);
  } else {
    header('Location: http://nic.x10.mx/message?' . $row["nimblecode"]);
}
$conn->close();
?>

非常感谢任何帮助!我知道这是一个有趣的问题,但我仍在学习!

【问题讨论】:

  • 您是否安装了 php 并配置了 Apache(或您正在使用的任何网络服务器)以正确运行 php 文件?
  • 它们还没有从网络服务器上运行,而只是通过浏览器在本地进行测试,同时正在开发以简化流程。如果在本地运行,我将如何安装它们?
  • 为了在本地运行 php 文件,您需要安装一个网络服务器,例如 wamp 或 xampp 应该可以帮助您入门,它捆绑了 apache、php、mysql。
  • 我理解达伦,我只是让一切正常工作,即使代码非常混乱。一旦它正常工作,我将清理代码并修复所有错误。
  • 谢谢亚历克斯,我试试看!

标签: php html mysql


【解决方案1】:

您的代码中存在语法错误,请在php中使用点进行连接,并在查询时使用mysqli对象而不是mysql。

$result = mysqli_query($conn, "SELECT id, nimblecode, urlredirect, messageredirect     FROM linker WHERE nimblecode = '" . $var . "'");

完整代码更改:将此文件存储在名称中为“tinyurl.php”

$password = "管理员";
$dbname = "灵活";
$var = $_GET['var'];
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
die("连接失败:" . $conn->connect_error);
}
$result = $conn->query("SELECT id, nimblecode, urlredirect, messageredirect FROM linker WHERE nimblecode = '%s', $var);
if (!$result) {
echo '无法运行查询:' . mysql_error();退出;
}
if ($result->num_rows > 0) { $row = $result->fetch_assoc();
回声“身份证:”。 $row["nimblecode"]. " //// URL: " .$row["urlredirect"]. "
//// 消息:" .$row["messageredirect"]."
";
} if ($row["messageredirect"] == "") {
header('位置:' . $row["urlredirect"]);
} else if ($row["nimblecode"] != "") {
header('位置:http://nic.x10.mx/message?' . $row["nimblecode"]);
} 别的 { header('位置:http://nic.x10.mx/'); } $conn->关闭(); ?>

在.htaccess 中需要添加这条规则:

重写引擎开启 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f 重写规则 ^([^/]+)/?$ http://nic.x10.mx/tinyurl.php?var=$1 [QSA,NC,L]

示例 URL 条目 http://nic.x10.mx/abc

将重定向到 DB 中存在的目标 URL。

【讨论】:

  • 所以我已经实现了这段代码,一切似乎都工作正常,除了我在 php 文件页面上收到 http 500 错误。任何想法为什么现在会发生这种情况?
  • 检查error.log文件,它会给你详细的错误信息。基于此,您可以修复它。
【解决方案2】:

如果您无法运行 php 代码,请检查 apache 的 httpd.conf 文件是否未注释 PHP MIME 类型,此外还有其他事项需要考虑。检查这个Apache shows php code instead of executing

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多