2016-09-17 46 views
4

好吧,我正在制作这个网站(有点像bitly或goo.gl),在那里你输入一个链接,并缩短它,但有一些额外的好东西。
现在,我只是托管一个本地mysql服务器进行测试,并且它的设置方式,一旦输入链接缩短,随机生成一个3位数的代码并将其放入mysql表格以及其链接。根据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(); 
?> 

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

+1

你安装了PHP和配置的Apache(或任何你正在使用的网络服务器)来正确运行PHP文件? –

+0

theyre没有跑掉一个网络服务器,而只是通过thr浏览器进行本地测试,而正在开发以简化流程。我如何安装这些如果在本地运行? – Nic

+1

为了在本地运行php文件,你需要安装一个web服务器,像wamp或xampp这样的东西应该让你开始,它有apache,php,mysql捆绑在一起。 –

回答

1

你的代码有语法错误,请在php中使用concatenation的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] 

样品URL条目 http://nic.x10.mx/abc

将重定向到数据库中的目标URL。

+0

所以我已经实现了这个代码,并且一切似乎都正常,除非我在php文件页面上获取http 500错误。任何想法为什么现在可能会发生? – Nic

+0

检查error.log文件,所以它会给你详细的错误。基于此,你可以修复它。 – Senthil