2016-04-24 4 views
1

Jedes Mal, wenn die Aktualisierung gedrückt wird, löscht es meinen Txt aus der Datei. Ich brauche dieses Skript nur, wenn ein Spieler bei meinem Spiel gewonnen hat. Aber es scheint immer noch zu laufen. HierProblem aktualisieren? Skript läuft bei jeder Aktualisierung

ist der Index

<?php 
    $win = 0; 
    $cards = 5; 
    $probability = 0.5; 

    function generateScratchCard($n,$p) { 
     $w = 0; 
     for($i = 0; $i<$n; $i++) { 
      $result = (mt_rand()/mt_getrandmax()); 
      if($result >= $p) { 
       $w++; 
      } 
     } 
     return $w; 
    } 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8" /> 
     <script type="text/javascript" src="assets/js/scratch.min.js"></script> 
     <script> 
      <?php 
       $win = generateScratchCard($cards, $probability); 
       echo "var win = ".$win."; "; 
       echo "var cards = ".$cards."; "; 
      ?> 
      var p = 0.5; 
      var scratched = 0; 

      function callback(d) { 
       scratched++; 
       if(scratched >= cards) { 
        if(win > (cards/2)) { 
         document.getElementById('result').innerHTML = '<?php include_once ("file.php"); ?>'; 
        } else { 
         document.getElementById('result').innerHTML = 'You lose, but you can try again!'; 
        } 
       } 
      } 

      //+ Function written by Jonas Raoni Soares Silva 
      //@ http://jsfromhell.com/array/shuffle [v1.0] 
      function shuffle(o){ //v1.0 
       for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x); 
       return o; 
      }; 

      window.onload = function() { 

       var container = document.getElementById('container'); 
       var cardsArray = []; 
       for(var i=0, l=cards; i<l; i++) { 
        if(i<win) { 
         cardsArray[i] = true; 
        } else { 
         cardsArray[i] = false; 
        } 
       } 
       shuffledArray = shuffle(cardsArray); 
       for(var i=0; i<cards; i++) { 
        var scratchCard = document.createElement('div'); 
        var backgroundImage; 
        if(shuffledArray[i]) { 
         backgroundImage = 'assets/images/win.png'; 
        } else { 
         backgroundImage = 'assets/images/lose.png'; 
        } 

        container.appendChild(scratchCard); 
        createScratchCard({ 
         'container':scratchCard, 
         'background':backgroundImage, 
         'foreground':'assets/images/foreground.png', 
         'percent':40, 
         'coin':'assets/images/coin2.png', 
         'thickness':18, 
         'counter':'percent', 
         'callback':'callback' 
        }); 
       } 


      }; 
     </script> 
     <style> 
      #container { margin: 50px auto; width: 900px; } 
      #container div { display: inline-block; vertical-align: top; } 
      #result { font-size: 15px; text-align: center; color: #514d4d; text-transform: uppercase; font-weight: bold; padding: 15px 0 15px; } 
     </style> 
    </head> 
    <body> 
     <div id="container"></div> 
     <div id="result"></div> 
    </body> 
</html> 

Hier wird die file.php

<?php 
$coupons = file("coupons.txt", FILE_IGNORE_NEW_LINES); 
echo "Your Winning Code Is: ".htmlspecialchars($coupons[0])."."; 
array_shift($coupons); // Removes the first coupon 
file_put_contents("coupons.txt", implode("\n", $coupons)); 
?> 

Vielen Dank für Ihre Hilfe :)

sample here

Antwort

0

Wenn Sie die PHP-Datei direkt enthalten Im HTML-Body wird es ausgedruckt und ausgeführt Die Seite wird jedes Mal geladen. Die Natur der Bestie. Um eine PHP-Datei basierend auf einem Javascript-Ereignis auszulösen, benötigen Sie ajax. Dies setzt die jQuery library to handle ajax voraus, da das eigene Rollen etwas arbeitsintensiv ist. Hier ist eine schnelle Art und Weise jQuery enthalten:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 

Und hier ist die Callback-Funktion:

function callback(d) { 
     scratched++; 
     if(scratched >= cards) { 
      if(win > (cards/2)) { 
       $.ajax({ 
        method: "GET", 
        url: "file.php" 
       }) 
       .done(function(msg) { 
        document.getElementById('result').innerHTML = msg; 
       }); 
      } else { 
       document.getElementById('result').innerHTML = 'You lose, but you can try again!'; 
      } 
     } 
    } 
+0

Ihnen danken, dass gearbeitet zu haben schien :) –

+0

Kein Problem. Wenn Sie meine Antwort auffrischen und akzeptieren könnten, würde ich es begrüßen. – larsAnders