2016-09-17 8 views
4

Ok, also mache ich diese Website (Art von bitly oder goo.gl), wo Sie einen Link eingeben und es verkürzt, aber mit einigen Extras.
Momentan host ich nur einen lokalen mysql-Server zum Testen und die Art, wie es eingerichtet ist, sobald ein Link eingegeben wird, um zu verkürzen, wird ein zufälliger 3-stelliger Code erzeugt und in die mysql-Tabelle mit seinem Link eingefügt.Gehe zu URL basierend auf mySQL Abfrage

Wenn Sie den Code auf der Website eingeben, geht es in die Tabelle mysql, findet den Code, findet den entsprechenden Link und soll diesen Link theoretisch zurückbringen und dann öffnen.

Hier ist das Problem. Es funktioniert einfach nicht. Ich kann nicht herausfinden, ob es ein Problem mit der HTML-Seite oder mit dem Scripting ist, aber ich habe keine Ahnung.

Ich bin nicht sehr erfahren mit PHP (Sprache im Umgang mit Abfrage-Skript), so bin ich mir nicht sicher, wie Sie zur Fehlerbehebung gehen.

Ich hatte gehofft, jemand hier könnte einen Einblick geben, warum es nicht funktioniert.
Alles, was ich weiß, ist, wenn ich auf den "Go" -Button klicke, öffnet es den PHP-Code, anstatt es zu starten, und ich bin mir nicht sicher, wie ich es beheben soll.

Da ich nicht genau weiß, was das Problem ist, hier ist sowohl der HTML-und PHP-Code.

HTML: (. Abgespeckte nur Körper für Bequemlichkeit nichts anderswo interessant)

<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(); 
?> 

Jede Hilfe ist sehr zu schätzen! Ich weiß, dass es eine interessante Frage ist, aber ich lerne immer noch!

+1

Haben Sie PHP installiert und konfiguriert Apache (oder welchen Webserver Sie verwenden), um PHP-Dateien ordnungsgemäß auszuführen? –

+0

theyre lief noch nicht von einem Webserver ab, sondern wurde nur lokal über den Browser getestet, während er entwickelt wurde, um den Prozess zu rationalisieren. Wie würde ich diese installieren, wenn sie lokal ausgeführt werden? – Nic

+1

um PHP-Dateien lokal zu betreiben, müssen Sie einen Webserver installieren, etwas wie wamp oder xampp sollten Sie beginnen, es hat Apache, PHP, MySQL gebündelt in. –

Antwort

1

Es gibt einen Syntaxfehler in Ihrem Code, bitte verwenden Sie den Punkt für die Konkatentation in PHP und verwenden Sie mysqli object während der Abfrage anstelle von mysql.

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

Voll Änderungen am Code: Speichern Sie diese Datei in den Namen als "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(); ?>

In .htaccess Notwendigkeit, diese Regel hinzuzufügen:

 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^([^/]+)/?$ http://nic.x10.mx/tinyurl.php?var= $1 [QSA,NC,L] 

Beispiel-URL-Eintrag http://nic.x10.mx/abc

Wird auf die in der DB vorhandene Ziel-URL umgeleitet.

+0

Also habe ich diesen Code implementiert, und alles scheint gut zu funktionieren, außer dass ich http 500 Fehler auf der PHP-Seite bekomme. Irgendwelche Ideen, warum das jetzt passieren könnte? – Nic

+0

Überprüfen Sie die Datei error.log, damit Sie den Fehler detailliert erhalten. Basierend darauf können Sie es beheben. – Senthil

0

Wenn Sie PHP-Code nicht ausführen können, dann überprüfen Sie, ob die httpd.conf-Datei des Apache den PHP-MIME-Typ unkommentiert hat, außerdem gibt es noch andere Dinge zu beachten. Überprüfen Sie diese Apache shows php code instead of executing

Verwandte Themen