2016-07-15 12 views
0

Ich benutze PHP-Header-Speicherort, um die URL mit einem Parameter aus meiner MySQL-Datenbank zu ändern.PHP-Header-Speicherort - wird aktualisiert - mit exit() wird die Seite nicht angezeigt (leere Seite)

<?php 
    include ('databaseconn.php'); 
    include ('search.php'); 
    header('Location: http://localhost:8888/docs/document.php?UniqueKey='.$row['UniqueKey']); 
    exit(); 
?> 

Ich habe rund 1000 Zeilen in meiner Datenbank, die jeweils aus einem UniqueKey wie: 46fF5. Jedes Mal, wenn ich meinen Browser aktualisiere, ruft er eine zufällige Zeile aus meiner Datenbank auf, einschließlich des UniqueKey, der dieser Zeile entspricht.

Was ich

will ich will die Seite aktualisieren, und dass der Link in meinem Browser wird automatisch aktualisiert. Also könnte ich haben: localhost: 8888/docs/document.php? UniqueKey = 12dF2. Wenn ich (F5) aktualisiere, möchte ich, dass die NEUE Zeile ihren UniqueKey in der Adresszeile anzeigt.

Das Problem

Die exit(); Funktion gibt eine leere Seite zurück. Wenn ich es entferne, durchläuft die Seite weiterhin verschiedene eindeutige Schlüssel, was immer noch zu einer leeren Seite führt (aufgrund der 2 Include-PHP-Dateien, die für eine neue Zeile aktualisiert wird).

benutzte ich eine IF-Anweisung:

if(!isset($_GET['UniqueKey'])) { header loc code } 

Aber dann, sobald es ändert sich nur, und wenn ich die Seite aktualisieren, wird es die erste UniqueKey halten es gefunden.

Ich weiß nicht, was zu tun ist. Ich habe "alles" ausprobiert. Irgendwelche Gedanken?

EDIT

Anscheinend muss ich die Verbindung und search.php Datei enthalten sein, so hier geht:

databaseconn.php

$servername = "localhost"; 
$username = "root"; 
$password = "root"; 
$dbname = "mydatabase"; 
// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

search.php

Sehr viel o f-Code, aber das ist der Teil, worauf es ankommt (nehme ich an):

$sql = "SELECT * FROM documents order by RAND()"; 
$result = $conn->query($sql); 
$row = $result->fetch_assoc(); 
+0

nur um zu clairfy - dieser Code (mit 'header()') ist auch in Ihrer 'document.php' Datei? – mitkosoft

+2

Nun, wenn Sie Hilfe wollen, würde ich auch die 'search.php' und die' datenbankconn.php' als das, wo alles schien auf – RiggsFolly

+0

Vielen Dank, Entschuldigung für die Verzögerung, es ist aktualisiert! – JuliusSecret

Antwort

0

einfach SESSION dafür. Das folgende Beispiel nur die Idee zeigen, können Sie leicht ändern Sie den Code für Sie braucht:

<?php 
    session_start(); 
    error_reporting(E_ALL); 
    if($_GET['rand'] == $_SESSION['rand'] || !$_GET['rand']){ 
     $rand = mt_rand(1,1111111); 
     header("Location: ".$_SERVER['PHP_SELF']."?rand=".$rand); 
    }else{ 
     $_SESSION['rand'] = $_GET['rand']; 
    } 
    print_r($_SESSION); 
?> 

Nach jeder Aktualisierung der GET Parameter anders sein wird, wie Sie wollen.

0

Weiter ist ein Beispiel, wie man die Seite jedes Mal mit verschiedenen Schlüsseln aktualisiert, damit man sie mit ihren eigenen vergleichen kann (der zufällige Schlüssel wird nach jeder Aktualisierung in der Adressleiste angezeigt) mit einem Klick auf eine Schaltfläche:

zzz.php

<html> 
    <head> 
    </head> 
    <body> 
    Current key : 
<?php 
// CHECK IF PAGE IS RETURNING FROM YYY.PHP. 
if (isset($_GET[ "key" ])) 
    echo $_GET[ "key" ]; 
else echo "No key"; 
?> 
    <form action="yyy.php"> 
     <input type="submit" value="Refresh"/> 
    </form> 
    </body> 
</html> 

yyy.php

<?php 
// REPLACE NEXT ARRAY WITH THE SQL QUERY. 
$keys = array("111","222","333","444","555","666","777","888","999"); 
$index = rand(0,count($keys)-1); 
header("Location: zzz.php?key=" . $keys[ $index ]); 
?> 

Kopieren vorherige Codes in Dateien mit den angegebenen Namen ("zzz.php" und "yyy.php", sorry für den Mangel an Kreativität in die Dateinamen), und öffnen Sie "zzz.php" in Ihrem Browser.

Wir können nicht Ihren gesamten Code sehen, daher ist es schwierig festzustellen, wo genau das Problem liegt.