php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.12.2008, 17:03  
Erfahrener Benutzer
 
Registriert seit: 28.10.2008
Beiträge: 181
Rilana ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Erledigt] PHP Flash MySql Punkte übermittlung

Hallo zusammen, ich habe ein Flash game, welches einen Punktestand an eine mysql Datenbank übermitteln soll. Bis jetzt habe ich es fertig gebracht dass das Game checked via PHP ob es den User mit Passwort gibt. Nun wollte ich aber zusätzlich noch sagen falls es den User mit Passwort gibt, soll doch der Punktestand gleich übermittelt werden. Doch irgendwie krieg ich dass nicht hin.
Code:
<?

$pseudonym=$_POST['pseudonym'];
$pass=$_POST['pass'];
$punkte=$_POST['punkte'];

if ($pseudonym && $pass){
	mysql_pconnect("localhost","www","www") or die ("didn't connect to mysql");
	mysql_select_db("www") or die ("no database");
$query = "SELECT * FROM game WHERE pseudonym = '$pseudonym' AND pass = '$pass'";
$result = mysql_query( $query ) or die ("didn't query");

$num = mysql_num_rows( $result );
if ($num == 1){
	$sql = "UPDATE game SET punkte = '$punkte' WHERE pseudonym = '$pseudonym'";	
  	$result = mysql_query($mysql_pconnect, $mysql_select_db) or trigger_error("SQL", E_USER_ERROR);
	print "status=You're in&checklog=1";
	} else {
	print "status=Sorry, but your user name and password did not match a user name/password combination in our database.  Usernames and passwords are entered in from a different file.  Thank you for visiting test login script!!&checklog=2";
}
}

?>
Seit dem ich das in rot geschriebene hinzugefügt habe, funktioniert das ganze nicht mehr, was mach ich für einen Denkfehler? Vielen Dank für euren Input. Gruss, Rilana
Rilana ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.12.2008, 18:31  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Hallo Rilana,

woher kommen $mysql_pconnect und $mysql_select_db? Und wieso verwendest du die dort?
Wahrscheinlich schlägt das Query immer fehl und du landest deshalb bei trigger_error()...

Da du $sql nirgendwo verwendest, vermute ich du wolltest eigentlich folgendes:
Code:
$result = mysql_query($sql) or die('...');

Anmerkung am Rande:
Bitte schreibe in Zukunft doch etwas genauer was "funktioniert nicht" heißt.
Und du solltest die Werte die du dem Script übergibst noch mit mysql_real_escape_string() behandeln.
agrajag ist offline  
Alt 17.12.2008, 07:36  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Aus eigener Erfahrung:

du solltest auf jeden Fall noch Überprüfen ob die geposteten Werte wirklich von der Flashanwendung kommen oder einfach so von irgendwem abgeschickt werden (zB. mit einem selbstgeschriebenem HTML Formular).

Flash läuft lokal und gerade Flash Spiele sind deshalb ein beliebtes Manipulationsziel.

Was ich schon gesehen habe um ein Script vor Manipulation zu schützen waren:

- hashes für jede Sitzung die über das Spiel gestartet wird
- Werte die auf die Punkte drauf addiert oder abgezogen werden

Wenn in deinem Spiel zB Steine übersprungen werden sollen, kannst du auch die Gesamtzahl der Steine mitzählen und die Anzahl der Steine die übersprungen wurden und im Script einmal nachrechnen ob die übermittelte Punktzahl überhaupt möglich ist.

Überhaupt übermittle an das PHP Script so viele Informationen wie möglich um die Punktzahlen zu prüfen, gerade wenn man sich in einen Highscore eintragen und etwas gewinnen kann. Wenn du im Script nachrechnen kannst ob die Punktzahl überhaupt möglich ist und die zusätzlichen Informationen noch in die Datenbank ablegst kannst du auch später noch nachvollziehen ob manipuliert wurde oder nicht.

Aber selbst das wird niemanden aufhalten, da Flash Spiele in der Regel mehr als leicht decompiled werden können. So wird aber ein Grossteil der Betrugswilligen abgehalten, auf jeden Fall der Teil der nur Wireshark kennt, aber keine Decompiler.

gruss
moveax1
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 17.12.2008, 08:45  
Erfahrener Benutzer
 
Registriert seit: 28.10.2008
Beiträge: 181
Rilana ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke moveax1 denn genau diese Probleme hatten wir mit dem alten game welches mit ASP lief. Ich hoffte das PHP einfach sicherer wäre, aber werde deine Tipps befolgen... danke.
Rilana ist offline  
Alt 17.12.2008, 09:32  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Rilana Beitrag anzeigen
Danke moveax1 denn genau diese Probleme hatten wir mit dem alten game welches mit ASP lief. Ich hoffte das PHP einfach sicherer wäre, aber werde deine Tipps befolgen... danke.
Allein durch die Gestaltung mit PHP wirst du keinen Sicherheitsgewinn erreichen.

SQL Injections vermeiden und Input validieren, immer überlegen wie man eine Möglichkeit schaffen kann um zu prüfen dass der Input seine Richtigkeit hat.
__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 17.12.2008, 11:53  
Erfahrener Benutzer
 
Registriert seit: 28.10.2008
Beiträge: 181
Rilana ist zur Zeit noch ein unbeschriebenes Blatt
Standard Rangliste

Habe nun gedacht ich bin superschlau, doch leider hat mich die Realität wieder eingeholt. Ich möchte herausfinden anhand einer Punktzahl, welchen Rang die Person belegen würde. Wie soll ich denn da am besten vorgehen? Bis jetzt habe ich dass, aber es ist überhaupt noch nicht durchdacht!
Code:
<?
//connect to database
mysql_pconnect("localhost","www","www") or die ("didn't connect to mysql");
mysql_select_db("www") or die ("no database");
	
mysql_query("SET NAMES 'UTF8'");  

// Gibt die aktuelle Rangliste mit Namen aus.
$result = mysql_query("SELECT * FROM game ORDER BY punkte DESC") 
or die(mysql_error());  


echo "<table border='1'>";
echo "<tr> <th>Pseudonym</th> <th>Punkte</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
	// Print out the contents of each row into a table
	echo "<tr><td>"; 
	echo $row['pseudonym'];
	echo "</td><td>"; 
	echo $row['punkte'];
	echo "</td></tr>"; 
} 

echo "</table>";

?>
Wie sage ich aber nun dass die oberste Ausgabe Rang 1 ist, die nächste Rang 2 usw. Habe ja schon eine ID aber die stimmt natürlich nicht mit dem Rang überrein. Der Vorgang sollte eigentlich sein dass ich spiele, eine Punktzahl habe, diese dann mit der Datenbank verglichen wird und mir den Rang welchen ich belegen würde ausgibt. Könnte mir bitte jemand sagen Wie ich da wieter vorghen muss? Wäre wirklich lieb.... Danke, Rilana
Rilana ist offline  
Alt 17.12.2008, 12:29  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.072
PHP-Kenntnisse:
Anfänger
litterauspirna befindet sich auf einem aufstrebenden Ast
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von Rilana Beitrag anzeigen
Habe nun gedacht ich bin superschlau, doch leider hat mich die Realität wieder eingeholt. Ich möchte herausfinden anhand einer Punktzahl, welchen Rang die Person belegen würde. Wie soll ich denn da am besten vorgehen? Bis jetzt habe ich dass, aber es ist überhaupt noch nicht durchdacht!
Das ist in erster Linie schlecht wenn etwas nicht durchdacht ist,egal in welcher Richtung. Du müsstest im Vornherei fest legen wie du das mit den Rang und den Punktezahlen in Zusammenhang bringen willst. Danach dein PHP Programm und DB Design erstellen. Am besten du durchdenkst dir das erst mal mit Papier und Stift und bringst es zu Papier,danach baust du einfach dein Programm aus. Abfragen in dieser Art kannst du dann mit einem Join realisieren wenn du die Werte in mehreren Tabellen unterbringst.

Ohne das du dir das alles durchdacht hast kann dir hier keiner helfen,denn niemand kann dir deine Konzeptplanung abnehmen. Wir können dann nur bei konkreten Code Problemen bei der Umsetzung helfen.

mfg der litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 17.12.2008, 17:24  
Erfahrener Benutzer
 
Registriert seit: 27.09.2008
Beiträge: 316
PHP-Kenntnisse:
Fortgeschritten
moveax1 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Rilana Beitrag anzeigen
Wie sage ich aber nun dass die oberste Ausgabe Rang 1 ist, die nächste Rang 2 usw. Habe ja schon eine ID aber die stimmt natürlich nicht mit dem Rang überrein. Der Vorgang sollte eigentlich sein dass ich spiele, eine Punktzahl habe, diese dann mit der Datenbank verglichen wird und mir den Rang welchen ich belegen würde ausgibt. Könnte mir bitte jemand sagen Wie ich da wieter vorghen muss? Wäre wirklich lieb.... Danke, Rilana
Wenn ich das jetzt richtig interpretiere werden mit deiner SQL Abfrage alle Teilnehmer des Highscore nach Punkten von der höchsten bis zur kleinsten Punktzahl ausgegeben.

Du könntest in der While Schleife in der du ausgibst einfach mitzählen:

PHP-Code:

$rang 
1;

while(
$row mysql_fetch_array$result )) {
    
// Print out the contents of each row into a table
    
echo "<tr><td>";
    echo 
$rang;
    echo 
"</td><td>"
    echo 
$row['pseudonym'];
    echo 
"</td><td>"
    echo 
$row['punkte'];
    echo 
"</td></tr>"

    
$rang++;

__________________
twitter.com/moveax1 || http://modxcms.com/ || http://ubuntuusers.de/

$live->free() OR die();
moveax1 ist offline  
Alt 17.12.2008, 19:32  
Erfahrener Benutzer
 
Registriert seit: 28.10.2008
Beiträge: 181
Rilana ist zur Zeit noch ein unbeschriebenes Blatt
Standard wow

Danke genau so was habe ich gesucht, es funktioniert irgendwie auch, aber etwas komisches passiert dabei, die Ausgabe der ID wird geändert. Habe dies gemacht:
Code:
$rang = 1;
echo "<table border='1'>";
echo "<tr> <th>userid</th> <th>Pseudonym</th> <th>Punkte</th> <th>Rang</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row into a table
    echo "<tr><td>";
    echo $rang;
    echo "</td><td>"; 
    echo $row['pseudonym'];
    echo "</td><td>"; 
    echo $row['punkte'];
    echo "</td><td>";
	echo "$rang";
	echo "</td></tr>"; 

    $rang++;
}
Die Ausgabe sieht dann so aus:
userid Pseudonym Punkte Rang
1 Aimee 400 1
2 tim 300 2
3 rilana 210 3
4 tom 100 4

Obwohl die ID eigentlich anders ist,
1. rilana
2. tim
3. aimee
4. tom

Es übernimmt einfach den Rang in die ID.... ist das Logisch? Kann mir nicht erklären wie dass sein kann. Es stört mit in diesem Fall nicht, da mir die ID eigentlich egal ist, aber finde es mega komisch....

Danke für eine eventuelle Erkläung....

Gruss, Rilama
Rilana ist offline  
Alt 17.12.2008, 19:51  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

In deinem Quellcode-Beispiel gibst du nirgendwo die ID aus - sondern immer den Rang....
agrajag ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL, Daten in Tabelle einlesen, Struktur funktioniert nicht ganz MasterChief PHP Tipps 2008 3 13.10.2008 11:39
[Erledigt] MySQL - ERROR 1044 bei erstellen einer Datenbank _youngenterpriser_ Datenbanken 2 05.02.2008 17:56
Kazzong sucht Web-Entwickler/in (PHP / MySQL / Flash Action Script / Flex) Kazzong Beitragsarchiv 0 03.11.2007 00:38
Mysql Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
[Erledigt] Realsierungsproblem - Punkte über mehre Tage / Wochen PHP Tipps 2006 3 09.03.2006 18:11
[Erledigt] not allowed to connect to this MySQL server PHP Tipps 2005-2 2 23.09.2005 18:34
Flash und MySQL? Charly Shop Sui Datenbanken 3 11.09.2005 00:33
Chat, PHP, Flash, XML, MySQL?????? PHP-Fortgeschrittene 2 06.09.2005 08:17
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
Formular von Flash nach mySql PHP Tipps 2005-2 4 27.06.2005 21:34
HTML, PHP, MySQL, Flash, Photoshop in Darmstadt Beitragsarchiv 0 17.11.2004 20:54
[Erledigt] Access denied for user: '@localhost' / SYSTEM@localhost Datenbanken 0 10.11.2004 20:35
[Erledigt] Formel1-Tippspiel durch PHP / MySQL Datenbanken 4 02.09.2004 21:07
PHP5 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; MySQL Datenbanken 5 01.08.2004 05:47
[Erledigt] Witze Off-Topic Diskussionen 7 09.07.2004 20:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php flash mysql, as3 mysql php, punkte aus flash games auslesen, flash highscore überprüfen, actionscript 3 highscore in eine xml schreiben, mysql flash, as3 php mysql, flash games vor manipulation schützen, mysql kein @ punkte, flash php punkte, php tippspiel ranglistenplatz der teilnehmer bestimmen script, flash game mit datenbank, mysql punkte berechnen, übermittlung von passwirt php, mysql name und punktezahl, php as3 mysql, flashgame punktestand auslesen, punktestand flash spiel php, flash php mysql script, flash game mit mysql datenbank

Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum