2017-05-17 3 views
0
$num = rand(0, 10000); 
$hash = password_hash($num, PASSWORD_BCRYPT, array(
    'cost' => 6 
)); 

Oben ist der Hash-Anklicken eines Textmarke neuen Hash zu erzeugen

<p class="reg-code">Hash: <span><?php echo $hash; ?></span><i class="fa fa-refresh" aria-hidden="true" id="refresh-code"></i></p> 

ich es so gerne, wenn jemand auf dem Tag klickt, das es einen neuen Hash in der Spanne erzeugt, wie würde ich kommen darüber hinweg?

Ich bin mir nicht sicher, wie ich das machen würde, als Funktion in PHP oder was.

+0

Sie müssten dies tun in Javascript, als php nur einmal ausgeführt wird, wenn Sie die Webseite – Deckerz

+0

aktualisieren möchten enthalten sollte, finde ich es lächerlich Erstelle eine [neue Frage] (https://stackoverflow.com/questions/44037952/clicking-ai-tag-to-generate-a-new-hash-wont-work) basierend auf meiner Antwort, ohne auch nur die Mühe zu machen. Sie hätten stattdessen kommentieren können, um eine aktualisierte Antwort zu erhalten. – Xorifelse

Antwort

0

Es Ajax genannt:

<p class="reg-code"> 
    Hash: 
    <span id="hash"><?php echo $hash; ?></span> 
    <i id="click" class="fa fa-refresh" aria-hidden="true" id="refresh-code"></i> 
</p> 

$('#click').click(function(){ 
    $.post("./path/to/hashscript.php", function(data) { 
    $("#hash").html(data); 
    }); 
}); 

Sie JavaScript-Ereignisse verwenden, um eine Serveranfrage und aktualisieren Sie die Seitenelemente mit der Antwort zu machen. Ihr PHP-Skript sollte die $hash widerspiegeln.

echo password_hash($num, PASSWORD_BCRYPT, ['cost' => 6]); 
+0

Hallo, Jetzt, wenn ich auf das Tag klicke, verschwindet der Hash einfach aus dem , erzeugt aber keinen neuen? – Oliver

+0

Dann rufen Sie höchstwahrscheinlich nicht das richtige Skript auf. Versuchen Sie, mit './Path/to/hashscript.php' herumzutüfteln. Außerdem sollten Sie wahrscheinlich Element-IDs anstelle von Klassen verwenden. – Xorifelse

+0

@Oliver Aktualisiert den Code zu verwenden würde ich, wie es sein sollte. – Xorifelse

0

Ajax ermöglicht es Ihnen, eine Anfrage auf eine andere Seite, ohne erfrischend zu senden. Überprüfen dieser Teil des jQuery Perform an asynchronous HTTP (Ajax) request

In Ihrem Fall, setzen Sie dieses auf (1., jQuery im Kopf Ihrer Seite enthalten):

<p class="reg-code">Hash: <span></span> 
<i class="fa fa-refresh" aria-hidden="true" id="refresh-code"></i></p> 

Beachten Sie, dass die < span> Das wird die Antwort ist leer (aber kann den ursprünglichen Hash am Anfang zeigen. Sein Inhalt wird trotzdem ersetzt, wenn Sie auf den Link klicken), wenn wir starten und dass eine ID mit der Refresh-Link verbunden istDann Sie jQuery verwenden:

$(document).ready(function() { 
    $("#refresh-code").click(function(){ // click on element with ID 'refresh-code' 

    $.ajax({ // method default is 'GET' 
      url: "hash.exe.php", // the PHP page that will generate new hash 
      success: function(html){ // if no PHP error 'html' is the response 
        $(".reg-code > span").html(html); // we append the html in the span 
      }, 
      error: function (request, status, error) { // we handle error 
      alert(request.responseText); 
      } 
      }); 
    }); 
}); 

PHP (hash.exe.php) wird wie folgt aussehen (links Sie verarbeiten, wie sie ist, hinzugefügt, um die echo'd Antwort):

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 

$num = rand(0, 10000); 
$hash = password_hash($num, PASSWORD_BCRYPT, array(
'cost' => 6 
)); 

echo"$hash"; // this 'invisible' HTML output is echo'd back to the page who initiated it 
?> 

Beispiel zusammensetzen FIDDLE

0

Es sollte erhalten werden. Weil es den Serverstatus nicht ändert. Gib einfach einen neuen Wert zurück.

$('.fa-refresh').click(function(){ 
    $.get("./path/to/hashscript.php", function(data) { 
    $(".reg-code > span").html("Hash:" + data); 
    }); 
}); 

und die hashscript.php Datei

echo md5(uniqid(rand(), TRUE)); 
+0

Schöne Kopie, und Ihre Änderung ist falsch. 'hashscript.php' sollte '$ hash' und keinen zufälligen Hashwert enthalten. – Xorifelse

+0

Ja, es ist eine Kopie. Aber wenn Sie Ihre Augen öffnen und sehen, werden Sie feststellen, was der Unterschied ist. Und das macht keinen Unterschied, Sie können drucken, was Sie wollen, es ist nur eine Idee. –

Verwandte Themen