好的,所以我正在制作这个网站(有点像bitly或者goo.gl),你输入一个链接然后缩短它,但还有一些额外的好处。
现在我只是托管一个本地mysql服务器进行测试,以及它的设置方式,一旦输入链接缩短,就会生成一个随机的3位数代码并将其与其链接一起放入mysql表中。
当您在网站上输入代码时,它会进入mysql表,找到代码,找到相应的链接,理论上应该带回该链接,然后打开它。
这就是问题所在。它根本不起作用。我无法弄清楚这是html页面的问题,还是脚本,但我不知道。
我对PHP(使用查询脚本的语言)不太熟悉,所以我不确定如何进行故障排除。
我希望有人可以提供一些有关它可能无法正常工作的见解 我所知道的是当我点击“开始”按钮时,它会打开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();
?>
非常感谢任何帮助!我知道这是一个有趣的问题,但我还在学习!
答案 0 :(得分:1)
您的代码中存在语法错误,请在php中使用dot进行连接,并在查询时使用mysqli对象而不是mysql。
$result = mysqli_query($conn, "SELECT id, nimblecode, urlredirect, messageredirect FROM linker WHERE nimblecode = '" . $var . "'");
完整代码更改:将此文件的名称存储为“tinyurl.php”
<?php $servername = "localhost"; $username = "nimbleadmin";
$password = "admin";
$dbname = "nimble";
$var = $_GET['var'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$result = $conn->query("SELECT id, nimblecode, urlredirect, messageredirect FROM linker WHERE nimblecode = '%s', $var);
if (!$result) {
echo 'Could not run query: ' . mysql_error(); exit;
}
if ($result->num_rows > 0) { $row = $result->fetch_assoc();
echo "id: " . $row["nimblecode"]. " //// URL: " . $row["urlredirect"]. "
//// Message: " . $row["messageredirect"]. "
";
} if ($row["messageredirect"] == "") {
header('Location: ' . $row["urlredirect"]);
} else if ($row["nimblecode"] != "") {
header('Location: http://nic.x10.mx/message?' . $row["nimblecode"]);
} else { header('Location: http://nic.x10.mx/'); } $conn->close(); ?>
在.htaccess中需要添加此规则:
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^([^/]+)/?$ http://nic.x10.mx/tinyurl.php?var=$1 [QSA,NC,L]
示例网址条目 http://nic.x10.mx/abc
将重定向到DB中的目标URL。
答案 1 :(得分:0)
如果您无法运行php代码,请检查apache的httpd.conf文件是否取消注释了PHP MIME类型,此外还有其他需要考虑的事项。请检查此Apache shows php code instead of executing