Frames mit Java aufrufen?

SLEAZOID

Grünschnabel
Hallo, liebe Community. ^_^

Ich bin gerade dabei, ein auf PHP-basierendes TCG (Trading Card Game) zu programmieren und bin schon weit gekommen. Ich habe schon das erste Spiel erfolgreich mit Javascript gecodet, jedoch stellt sich mir dabei ein Problem, dass ich auch durch einen Nachmittag mit Google und der Forumsuche nicht bewältigen konnte.

Das Spiel nennt sich "Zahlen Raten". Man muss versuchen, mit insgesamt 7 Versuchen eine Zahl zwischen 1 und 100, die zufällig gewählt wird, zu erraten. Man bekommt nach jedem Versuch gesagt, ob die Zahl kleiner oder größer als die geratene Zahl ist.

Ich habe folgende Codeschnipsel:

Code:
var homepage;
var homepage2;
homepage = 'spiel1.php?action=coins';
homepage2 = 'spiel1.php?action=coins2';

Code:
function generate() {
	Ratezahl = parseInt(document.getElementById('Raten').value);
	if (Ratezahl > Zufallszahl) {
		Versuche++;
                 Zahl = MVersuche - Versuche;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
                 GKG = GK1;
                 document.getElementById("zeig").innerHTML='<center>Die Zahl ist '+GKG+' als <b>'+Ratezahl+'</b>! <br> Du hast noch <b>'+Zahl+'</b> Versuche.</center><br>'
                 }
	}
	if (Ratezahl < Zufallszahl) {
		Versuche++;
                 Zahl = MVersuche - Versuche;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
                 GKG = GK2;
                 document.getElementById("zeig").innerHTML='<center>Die Zahl ist '+GKG+' als <b>'+Ratezahl+'</b>! <br> Du hast noch <b>'+Zahl+'</b> Versuche.</center><br>'
                 }
	}
	if (Ratezahl == Zufallszahl) {
		Versuche++;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
		document.location.href = homepage;
                 }
         }

}

Nach Beenden des Spiels soll in der Tabelle 'mitglieder' das gewonnene Geld gespeichert werden.

Wie man oben im Code sehen kann, wird, je nach Ausgang des Spiels, entweder mit document.location.href = homepage; oder mit document.location.href = homepage2; die jeweilige Adresse aufgerufen. Das Problem dabei ist, dass der jeweilige User gar nicht spielen brauch, sondern einfach an die URL

PHP:
?action= coins

oder

PHP:
?action = coins2

hängen muss, um Geld zu erhalten, egal ob gespielt wurde.

Mein Gedanke war, mit Javascript ein Frame aufzurufen, in der der jeweilige PHP-Abschnitt enthalten ist.
Code:

Code:
parent.frame1.location.href = frame1spiel1.php;

Dieser Code klappt jedoch nicht.
Der eigentliche PHP-Code ist folgender:

PHP:
         <?
         if($_REQUEST["action"] == "coins2") {
         $eintragspiele = "INSERT INTO spiele (name, timestamp, spiel)
         VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string(time())."', 'zahlenraten')";
	$eintragenspiele = mysql_query($eintragspiele);

         $geld = rand(100,200);

         $abfrage = "SELECT geld FROM mitglieder WHERE id = '".$_SESSION["login"]."' LIMIT 0,1"; // Datenabfrage
	$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_object($ergebnis))
		{
                 $geldalt = $row->geld;
                 $geldneu = $geld + $geldalt;

        	$eintrag = "UPDATE mitglieder SET geld = '".$geldneu."' WHERE id = '".$_SESSION["login"]."'";
	$eintragen = mysql_query($eintrag);
         	}
         if($eintragen)
         {
         echo"<center><br><br><b>Leider hast du nicht gewonnen. Trotzdem hast du als Trost ".$geld." Coins erhalten.</b><br><br></center>";
         }
         else
         {
         echo"Es ist ein Fehler aufgetreten ". mysql_errno() .": ".
	mysql_error();
         }
         }


         ?>

Der Code sollte allgemein verständlich sein.

MEINE FRAGEN SIND NUN:

1. Ist das, was ich will, eigentlich mit Frames realisierbar?
2. Wenn ja, wie muss ich dann frame1spiel1.php aufbauen und die eigentliche Datei aufbauen?
3. Wenn nein, wie geht es sonst? Kann ich irgendwie in meinem PHP-Code überprüfen, ob gespielt wurde?


Ich hoffe, mein Problem ist gut dargestellt und mir kann geholfen werden.

LG
SLEAZOID
 
Moin,

ob es mit Frames relisierbar ist....da sehe ich kein Problem.

Das Problem ist ja ansich, wie du clientseitige Manipulationen verhindern kannst, das geht generell, indem du die Anzahl der Versuche sowie die zu Ratende Zahl serverseitig speicherst.

Du legst halt eine Session an, in der du diese beiden Daten speicherst. Bei jedem Rateversuch sendest du die geratene Zahl an das PHP-Skript(damit dies im Frame erscheint, verwendest du das target-Attribut des Formulars).
PHP prüft dann ob die Zahl korrekt ist und die Anzahl erlaubter Versuche nicht überschritten wurde und "zahlt" die Belohnung aus(oder auch nicht).
 
Danke für deine Antwort.
Ich glaube, ich poste mal den gesamten Code.

Code:
<?php
	session_start(); // Startet die Session
	include("header.php");
	include("db.php");
	include("functions.inc.php");
         if(isset($_SESSION["login"]))
         {
         $name = value("mitglieder WHERE id = '".$_SESSION["login"]."'","name");
         ?>

<?
        if($_REQUEST["action"] == "coins") {
         $eintragspiele = "INSERT INTO spiele (name, timestamp, spiel)
         VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string(time())."', 'zahlenraten')";
	$eintragenspiele = mysql_query($eintragspiele);

        $geld = rand(1000,2000);
        $abfrage = "SELECT geld FROM mitglieder WHERE id = '".$_SESSION["login"]."' LIMIT 0,1"; // Datenabfrage
	$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_object($ergebnis))
		{
                 $geldalt = $row->geld;
                 $geldneu = $geld + $geldalt;

        	$eintrag = "UPDATE mitglieder SET geld = '".$geldneu."' WHERE id = '".$_SESSION["login"]."'";
	$eintragen = mysql_query($eintrag);
         	}
         if($eintragen)
         {
         echo"<center><br><br><b>Glückwunsch! Du hast gewonnen und ".$geld." Coins erhalten.</b><br><br></center>";
         }
         else
         {
         echo"Es ist ein Fehler aufgetreten ". mysql_errno() .": ".
	mysql_error();
         }
         }
         ?>

         <?
         if($_REQUEST["action"] == "coins2") {
         $eintragspiele = "INSERT INTO spiele (name, timestamp, spiel)
         VALUES ('".mysql_real_escape_string($name)."', '".mysql_real_escape_string(time())."', 'zahlenraten')";
	$eintragenspiele = mysql_query($eintragspiele);

         $geld = rand(100,200);

         $abfrage = "SELECT geld FROM mitglieder WHERE id = '".$_SESSION["login"]."' LIMIT 0,1"; // Datenabfrage
	$ergebnis = mysql_query($abfrage);
		while($row = mysql_fetch_object($ergebnis))
		{
                 $geldalt = $row->geld;
                 $geldneu = $geld + $geldalt;

        	$eintrag = "UPDATE mitglieder SET geld = '".$geldneu."' WHERE id = '".$_SESSION["login"]."'";
	$eintragen = mysql_query($eintrag);
         	}
         if($eintragen)
         {
         echo"<center><br><br><b>Leider hast du nicht gewonnen. Trotzdem hast du als Trost ".$geld." Coins erhalten.</b><br><br></center>";
         }
         else
         {
         echo"Es ist ein Fehler aufgetreten ". mysql_errno() .": ".
	mysql_error();
         }
         }


         ?>

         <h1>Spiele &raquo Zahl erraten.</h1>
Du willst Geld verdienen? Dann errate die Zahl zwischen 1 und 100 in diesem Spiel und räume kräftig ab. ^__^ Dieses Spiel kannst du alle 30 min. spielen.<br><br>
<span id="zeig"></span>
<span id="fehler"></span>
<span id="showe"></span>
<span id="versuche"></span>
<script type='text/javascript'>
<!--
var Coins;
var Coins2;
var GK;
var GK1;
var GK2;
var GKG;
var Ratezahl;
var Zufallszahl;
var Versuche = 0;
var MVersuche = 7;
var homepage;
var homepage2;
Zufallszahl = Math.ceil(Math.random() * 100);
Coins = Math.ceil(Math.random() * 1000);
Coins2 = Math.ceil(Math.random() * 100);
homepage = 'spiel1.php?action=coins';
homepage2 = 'spiel1.php?action=coins2';
GK = 'x';
GK1 = 'kleiner';
GK2 = 'größer';
function generate() {
	Ratezahl = parseInt(document.getElementById('Raten').value);
	if (Ratezahl > Zufallszahl) {
		Versuche++;
                 Zahl = MVersuche - Versuche;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
                 GKG = GK1;
                 document.getElementById("zeig").innerHTML='<center>Die Zahl ist '+GKG+' als <b>'+Ratezahl+'</b>! <br> Du hast noch <b>'+Zahl+'</b> Versuche.</center><br>'
                 }
	}
	if (Ratezahl < Zufallszahl) {
		Versuche++;
                 Zahl = MVersuche - Versuche;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
                 GKG = GK2;
                 document.getElementById("zeig").innerHTML='<center>Die Zahl ist '+GKG+' als <b>'+Ratezahl+'</b>! <br> Du hast noch <b>'+Zahl+'</b> Versuche.</center><br>'
                 }
	}
	if (Ratezahl == Zufallszahl) {
		Versuche++;
                 if (Versuche > MVersuche) {
            	document.location.href = homepage2;
         	}else{
		document.location.href = homepage;
                 }
         }

}
//-->
</script>
<center>
<?
$abfrage = "SELECT timestamp FROM spiele WHERE name = '".$name."' AND spiel = 'zahlenraten' ORDER BY timestamp DESC LIMIT 1";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$jetzt = time();
$timestamp = $row->timestamp;
$jetztrechnung = ($jetzt - $timestamp);
	if ($jetztrechnung < 1800 )
	{
		$lösung = 1800 - $jetztrechnung;
		$ende = date("i",$lösung);

		echo "Du musst noch ".$ende." Minuten warten, um erneut spielen zu können.";
	}
	else
         {

	echo"	<form>
		<input type='text' name='Raten' id='Raten' value='' size='5' />
		<input type='button' name='Raten2' id='Raten2' value='Raten' onclick='generate();' />
		</form>
		</center";

        }
        }
 }else{
 echo"Kein Zutritt!";
 }
	include("footer.php");
?>

Es wird doch über Javascript geprüft, ob die Zahl richtig ist und das im <span></span> eingefügt. Und du sagst, man kann das mit Frames lösen? Mit welchem Code? Denn ich habe es selber nicht hinbekommen.
 

Neue Beiträge

Zurück