[RELEASE]PHP Script Boni's ändern.

12/12/2012 20:12 .NoThx#1
Hey Leute,

Ich Release hier mal mein Kleines PHP-Script, was ich für meinen Privaten Testserver geschrieben habe.

Falls paar leute es brauchen, können sie es ja benutzen aber:
- Es gibt KEINERLEI sicherheits abfragen, man kann Theoretisch von allen Spielern alle Items Bearbeiten. Daher nich undedingt auf den Rootwebserver oder was weiß ich ziehen, wo andere zugriff drauf haben.

- Die PHP-Datei MUSS item_attr.php heissen.


Wenn interesse besteht, werde ich das Script Updaten und Verbessern.
Z.b. Nur eigene Items auswählbar d.h Login.
Design oder was weiß ich^^

P.s. Bitte verzeiht mir Fehler sowie unschöne stellen im Script, ich bin PHP-Anfänger .DD

Viel Spaß mit dem Script :D

PHP Code:
<meta charset="utf-8" />


<?php
       
    
    $MYSQL_PLAYER_DATABASE 
"player";
    
$MYSQL_HOST "IP_ADDRESSE";
    
$MYSQL_USERNAME "root";
    
$MYSQL_PASSWORD "PASSWD";
    
    
##################
    ## DO NOT TOUCH ##
    ##################
    
$DEBUG false;
    
$step $_GET["step"];
    
$itemBoni = array(
       
'0' =>'Kein Bonus',
       
'1' =>'Max TP',
       
'2' =>'Max MP',
       
'3' =>'vit',
       
'4' =>'int',
       
'5' =>'str',
       
'6' =>'dex',
       
'7' =>'Angreiffsgeschwindigkeit',
       
'8' =>'Bewegungsgeschwindigket',
       
'9' =>'Zaubergeschwindigkeit',
       
'10' =>'TP-Regeneration',
       
'11' =>'MP-Regeneration',
       
'12' =>'Vergiftungschance',
       
'13' =>'Ohnmachtschance',
       
'14' =>'Verlangsamungschance',
       
'15' =>'Chance auf Krit',
       
'16' =>'Chance auf DB',
       
'17' =>'Stark gegen Halbmenschen',
       
'18' =>'Stark gegen Tiere',
       
'19' =>'Stark gegen Orks',
       
'20' =>'Stark gegen Esoterische',
       
'21' =>'Stark gegen Untote',
       
'22' =>'Stark gegen Teufel',
       
'23' =>'Schaden wird von TP absorbiert',
       
'24' =>'Schaden wird von MP absorbiert',
       
'25' =>'Chance MP des gegners zu übernehmen',
       
'26' =>'Chance MP bei treffer zurückzuerhalten',
       
'27' =>'Chance körperlichen angrif abzublocken',
       
'28' =>'Chance pfeilangriff auszuweichen',
       
'29' =>'Schwertverteidigung',
       
'30' =>'Zweihandverteidigung',
       
'31' =>'Dolchverteidigung',
       
'32' => 'Glockenverteidigung',
       
'33' => 'Fächerverteidigung',
       
'34' => 'Pfeilwiederstand',
       
'35' => 'Feuerwiederstand',
       
'36' => 'Blitzwiederstand',
       
'37' => 'Magieverteidigung',
       
'38' => 'Windwiederstand',
       
'39' => 'chance, direkten körperlichen Angriff zu reflektieren',
       
'40' => 'Chance, Fluch zu reflektieren',
       
'41' => 'Giftwiederstand',
       
'42' => 'Chance, Mp wiederherzustellen',
       
'43' => 'Chance auf EXP-Bonus',
       
'44' => 'Chance, eine doppelte Menge Yang fallen zu lassen',
       
'45' => 'Chance, eine doppelte Menge von Gegenständen fallen zu lassen',
       
'46' => 'Trank Effektzuwachs',
       
'47' => 'Chance, Tp wiederherzustellen',
       
'48' => 'Immun gegen Ohnmacht',
       
'49' => 'Immun gegen Verlangsamung',
       
'50' => 'Immun gegen Stürzen',
       
'51' => ' Gibt es nicht',
       
'52' => 'Bogenreichweite',
       
'53' => 'Angriffswert',
       
'54' => 'Verteidigung',
       
'55' => 'Magischer Angriffswert',
       
'56' => 'Magische Verteidigung',
       
'57' => 'Kein Bonus',
       
'58' => 'Max. Ausdauer',
       
'59' => 'Stark gegen Krieger',
       
'60' => 'Stark gegen Ninja',
       
'61' => 'Stark gegen Sura',
       
'62' => 'Stark gg. Schamane',
       
'63' => 'Stark gg Monster',
       
'64' => 'Angriffswert',
       
'65' => 'Verteidigung',
       
'66' => 'EXP',
       
'67' => 'Dropchance von Gegenständen',
       
'68' => 'Droppchance von Yang',
       
'69' => 'Kein Bonus',
       
'70' => 'Kein Bonus',
       
'71' => 'Fertigkeitsschaden',
       
'72' => 'Durchschn. Schaden',
       
'73' => 'Wiederstand gegen Fertigkeitsschaden',
       
'74' => 'Durchschn. Schadenswiderstand',
       
'75' => 'Kein Bonus',
       
'76' => 'iCafe-EXP-Bonus',
       
'77' => 'iCafe Chance auf erbeuten von gegenständen plus',
       
'78' => 'Abwehrchance gegen Krieger',
       
'79' => 'Abwehrchance gegen Ninja',
       
'80' => 'Abwehrchance gegen Sura',
       
'81' => 'Abwehr gg. Schamane' );
    if (
$step == ){
       
$player_name $_POST["playerName"];
       
$player_Id 0;
       
$connection mysql_connect($MYSQL_HOST,$MYSQL_USERNAME,$MYSQL_PASSWORD) or die ("Could not connect to Database.");
       
mysql_select_db($MYSQL_PLAYER_DATABASE)or die ("The Database does not Exist -,-");
       
$requestId "SELECT * FROM player WHERE name = '".$player_name."'";
       
$resultId mysql_query($requestId)or die(mysql_error());
       
$resultreq mysql_fetch_object($resultId);
       
$player_Id $resultreq->id;
       if (
$resultreq->name == $player_name){
           
$requestItems "SELECT * FROM item WHERE owner_id = $player_Id ";
           
$resultItemQuery mysql_query($requestItems)or die(mysql_error());
           
           
$i 0;
           
$ItemArray = array();
           while ( 
$row mysql_fetch_assoc($resultItemQuery) )
           {
              
$ItemArray[$i] = $row;
              
$i++;
           }

           
$read 0;
           echo 
"Name" ?> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<?php echo "Boni's &Auml;ndern"?> <br><br><?php
           
while($i != $read){
              
$vnum $ItemArray[$read]['vnum'];
              
$Item_protoQuery "SELECT locale_name, type, wearflag FROM item_proto WHERE vnum = $vnum";
              
$resultItem_proto mysql_query($Item_protoQuery)or die(mysql_error());
              
$data = array();
              while (
$row mysql_fetch_assoc($resultItem_proto)) {
                  
$data[] = $row;
              }     
              if ((
$data[0]['type'] == 1) || ($data[0]['type'] == 2)){
                  
                  if (
$data[0]['wearflag'] != 128 || 256 || 512){
                     
$was = array("ä""ö""ü""Ä""Ö""Ü""ß"); 
                     
$wie = array("ae""oe""ue""Ae""Oe""Ue""ss"); 
                     
$in $data[0]['locale_name']; 
                     
$out str_replace($was$wie$in); 
                     echo 
"".$out."";
                     
?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                     <form action="item_attr.php" method="GET">
                     <input type="hidden" value="3" size="24" maxlength="50"name="step">
               <input type="hidden" value="<?php echo $data[0]['locale_name']; ?>" size="24" maxlength="50"name="item_name">
                     <input type="hidden" value="<?php echo $vnum?>" size="24" maxlength="50"name="item_vnum">
                     <input type="hidden" value="<?php echo $player_Id?>" size="24" maxlength="50"name="owner_vnum">
                     <input type="submit" value="&Auml;ndern">
                     </form>    <br><br>                  
                     <?php
                     
                  
}
              }
              
$read++;
           }
       }
    }else if ( 
$step == ){
       
$connection mysql_connect($MYSQL_HOST,$MYSQL_USERNAME,$MYSQL_PASSWORD) or die ("Could not connect to Database.");
       
mysql_select_db($MYSQL_PLAYER_DATABASE)or die ("The Database does not Exist -,-");
       
       
$itm_name $_GET['item_name'];
       
$owner_id $_GET['owner_vnum'];
       
$gegenstand $_GET['item_vnum'];
       
       
       
$boniQuery "SELECT *  FROM item WHERE vnum = $gegenstand";
       
$resultBonusList mysql_query($boniQuery)or die(mysql_error());
       
$boni_list = array();
       while (
$row mysql_fetch_assoc($resultBonusList)) {
           
$boni_list[] = $row;
       }
       
        
#################
        ## BONI SLOT 1 ##
        #################
        
?>
        <form action="item_attr.php?step=4" method="get">
        Bonus 1
        <select name="boni_1">
        <?php
        $arrayNum 
0;
       
$arrayTarget 81;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option> <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_1" type="text" value="20"/> 
       </select>
       <?php
        
#################
        ## BONI SLOT 2 ##
        #################
        
?>
        <br>
        Bonus 2
        <select name="boni_2">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option> <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_2" type="text" value="20"/> 
       </select>
       <?php
        
#################
        ## BONI SLOT 3 ##
        #################
        
?>
        <br>
        Bonus 3
        <select name="boni_3">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option>  <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_3" type="text" value="20"/>
       </select>
       <?php
        
#################
        ## BONI SLOT 4 ##
        #################
        
?>
        <br>
        Bonus 4
        <select name="boni_4">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option> <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_4" type="text" value="20"/> 
       </select>
       <?php
        
#################
        ## BONI SLOT 5 ##
        #################
        
?>
        <br>
        Bonus 5
        <select name="boni_5">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option>  <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_5" type="text" value="20"/>
       </select>
       <?php
        
#################
        ## BONI SLOT 6 ##
        #################
        
?>
        <br>
        Bonus 6
        <select name="boni_6">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option>  <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_6" type="text" value="20"/> 
       </select>
       <?php
        
#################
        ## BONI SLOT 7 ##
        #################
        
?>
        <br>
        Bonus 7
        <select name="boni_7">
        <?php
        $arrayNum 
0;
       while (
$arrayNum != $arrayTarget){
            
?>
            <option value="<?php echo $arrayNum?>"> <?php echo $itemBoni[$arrayNum]; ?> </option> <br/>
            <?php
            $arrayNum
++;
       }
       
?> 
       Wert: <input name="boni_wert_7" type="text" value="20"/>
       
       <input name="iten_name" type="hidden" value="<?php echo $itm_name;?>"/>
       <input name="ident_item" type="hidden" value="<?php echo $boni_list[0]['id'];?>"/>
       <input name="owner_id" type="hidden" value="<?php echo $owner_id;?>"/>
       <input name="item_vnum" type="hidden" value="<?php echo $gegenstand?>"/>
       
       <input name="step" type="hidden" value="4"/>
       </select><br>
        <input type="submit" value="Senden"/>
        </form> <?php
    
}else if($step == 4){
        if (isset(
$_GET['boni_1']) && isset($_GET['boni_wert_1']) && isset($_GET['boni_2']) && isset($_GET['boni_wert_2']) && isset($_GET['boni_3']) && isset($_GET['boni_wert_3']) && isset($_GET['boni_4']) && isset($_GET['boni_wert_4']) && isset($_GET['boni_5']) && isset($_GET['boni_wert_5']) && isset($_GET['boni_6']) && isset($_GET['boni_wert_6']) && isset($_GET['boni_7']) && isset($_GET['boni_wert_7']) ){
            
$boni_1 $_GET['boni_1'];
            
$boni_1_value $_GET['boni_wert_1'];
            
$boni_2 $_GET['boni_2'];
            
$boni_2_value $_GET['boni_wert_2'];
            
$boni_3 $_GET['boni_3'];
            
$boni_3_value $_GET['boni_wert_3'];
            
$boni_4 $_GET['boni_4'];
            
$boni_4_value $_GET['boni_wert_4'];
            
$boni_5 $_GET['boni_5'];
            
$boni_5_value $_GET['boni_wert_5'];
            
$boni_6 $_GET['boni_6'];
            
$boni_6_value $_GET['boni_wert_6'];
            
$boni_7 $_GET['boni_7'];
            
$boni_7_value $_GET['boni_wert_7'];
            
            
$item_name $_GET['item_name'];
            
$ident_item_id $_GET['ident_item'];
            
$owner_update $_GET['owner_id'];
            
$item_update $_GET['item_vnum'];
            
$connection mysql_connect($MYSQL_HOST,$MYSQL_USERNAME,$MYSQL_PASSWORD) or die ("Could not connect to Database.");
            
mysql_select_db($MYSQL_PLAYER_DATABASE)or die ("The Database does not Exist -,-");
            
$boniUpdateQuery "UPDATE `item` SET `attrtype0`='$boni_1', `attrvalue0`='$boni_1_value', `attrtype1`='$boni_2', `attrvalue1`='$boni_2_value', `attrtype2`='$boni_3', `attrvalue2`='$boni_3_value', `attrtype3`='$boni_4', `attrvalue3`='$boni_4_value', `attrtype4`='$boni_5', `attrvalue4`='$boni_5_value', `attrtype5`='$boni_6', `attrvalue5`='$boni_6_value', `attrtype6`='$boni_7', `attrvalue6`='$boni_7_value' WHERE (`id`='$ident_item_id') LIMIT 1";
            
$resultUpdateQuery mysql_query($boniUpdateQuery)or die(mysql_error());
            
            echo 
"Herzlichen Glühpunsch, deine Waffe ".$item_name." hat nun Folgende Werte: "?> <br> <?php
            
echo "Boni: ".$itemBoni[$boni_1]." Wert: ".$boni_1_value.""?> <br> <?php  if ($DEBUG){ echo " DEBUG: ".$boni_1." | ".$boni_1_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_2]." Wert: ".$boni_2_value.""?> <br> <?php  if ($DEBUG){ echo " DEBUG: ".$boni_2." | ".$boni_2_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_3]." Wert: ".$boni_3_value.""?> <br> <?php  if ($DEBUG){echo " DEBUG: ".$boni_3." | ".$boni_3_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_4]." Wert: ".$boni_4_value.""?> <br> <?php  if ($DEBUG){ echo " DEBUG: ".$boni_4." | ".$boni_4_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_5]." Wert: ".$boni_5_value.""?> <br> <?php  if ($DEBUG){echo " DEBUG: ".$boni_5." | ".$boni_5_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_6]." Wert: ".$boni_6_value.""?> <br> <?php  if ($DEBUG){echo " DEBUG: ".$boni_6." | ".$boni_6_value." DEBUG END";}
            echo 
"Boni: ".$itemBoni[$boni_7]." Wert: ".$boni_7_value.""?> <br> <?php  if ($DEBUG){echo " DEBUG: ".$boni_7." | ".$boni_7_value." DEBUG END";}
        }
    }else{
    
?>
    <form action="item_attr.php?step=2" method="post">
    Spielername:<br>
    <input type="text" value="Test" size="24" maxlength="20" name="playerName"><br><br>
    <input type="submit" value="Abschicken">
    </form>
    <?php

    
}
?>

Live Demo: [Only registered and activated users can see links. Click Here To Register...]
12/12/2012 20:43 .SeveN#2
Dies ist wirklich kein alzuschweres Script.
Sowas in der Art gibts es auch schon im Hen! Cms.
Trotzdem schön das du es Teilst!
Weiter so
12/12/2012 21:01 .Marcel'#3
Ziemlich unsauber geschrieben -> unnötig
12/12/2012 21:04 .NoThx#4
Quote:
Originally Posted by .NoThx View Post

P.s. Bitte verzeiht mir Fehler sowie unschöne stellen im Script, ich bin PHP-Anfänger .DD
Quote:
Originally Posted by .Marcel' View Post
Ziemlich unsauber geschrieben -> unnötig
Also Bierkeller gefällt's :D
12/12/2012 21:09 .Marcel'#5
Quote:
Originally Posted by .NoThx View Post
Also Bierkeller gefällt's :D
Oh sry.
Hab ich überlesen, aber gewöhne dir einen besseren und übersichtlichern Stil an.
12/12/2012 21:10 .NoThx#6
Ich habe mir als nächste aufgabe mal ein kleines Interface gemacht, wo man shops und son gedöns bearbeiten aknn, dort werde ich versuchen es besser zumachen! :D
12/12/2012 21:29 ライト#7
Glühpunsch :D
12/13/2012 05:51 ThinSmoke#8
Ich finde es gut das du dich daran wagst´ein paar Vorschläge

1.) limitier die mySQL Abfragen
2.) User Auswahl kannst du einfach über ein $_GET['char'] machen - mit der player ID oder via Charname und dann nur mit einem left Join
3.) wo wird die Verbindung zur Datenbank geschlossen? :-)
12/13/2012 13:33 .NoThx#9
Quote:
Originally Posted by xPit View Post
Ich finde es gut das du dich daran wagst´ein paar Vorschläge

1.) limitier die mySQL Abfragen
2.) User Auswahl kannst du einfach über ein $_GET['char'] machen - mit der player ID oder via Charname und dann nur mit einem left Join
3.) wo wird die Verbindung zur Datenbank geschlossen? :-)
1 Okay auf was soll ich diese Limitieren? bzw ich würde die Abfrage dann so abändern, dass nurnoch sachen abgrfagt werden die im Inventar oder Ausgerüstet sind.

Dann würde ich die Abfrage auf 97 bzw 98 begrenzen.

3) Ich werde es wahrscheinlich so machen, das einfach baum aufrufen der Seite einmal eine Verbindung aufgebaut wird, und dann am ende geschlossen wird, danke für dein Feedback :)
03/12/2013 00:02 DΛDΞX#10
Hehehe, hau das mal aufn RootServer mit 500 Gamern.
Bb Server^^

Zuu viele Lücken und unsicherheiten.
Fang doch mit kleineren Sachen an
03/12/2013 15:08 .NoThx#11
Quote:
Originally Posted by .xAUBERkiste View Post
Hehehe, hau das mal aufn RootServer mit 500 Gamern.
Bb Server^^

Zuu viele Lücken und unsicherheiten.
Fang doch mit kleineren Sachen an
Quote:
Falls paar leute es brauchen, können sie es ja benutzen aber:
- Es gibt KEINERLEI sicherheits abfragen, man kann Theoretisch von allen Spielern alle Items Bearbeiten. Daher nich undedingt auf den Rootwebserver oder was weiß ich ziehen, wo andere zugriff drauf haben.
Lesen bildet :facepalm:

#reported[ spam ]
03/12/2013 22:46 Zuckerbäcker#12
Hi,

auch wenn du sagst, bzw. weil du ja sagst, dass du PHP-Anfänger bist, will ich dir hier nen kleinen Tipp geben, wie du das ganze etwas sicherer machen kannst:
Nutzereingaben (Formulareingaben oder sonstige fälschbare Werte) niemals unverarbeitet in MySQL-Abfragen verwenden...
Also z.B.
$boni1 = $_GET["..."];
SELECT ... FROM .... WHERE ?? = $boni1;
In dem Beispiel könnte $boni1 ein beliebiger Wert sein und so könnten sogar Anfänger was ganz großes mit deinem Webspace anstellen :) --> MySQL-Injection...
Verhindern könntest du das z.B. schon mit einem ganz einfachen Zusatz:
SELECT ... FROM .... WHERE ?? = mysql_real_escape_string['$boni1'];
Auf Zeichensetzung jetzt mal nicht achten, kann sein dass da n bissl was falsch is, aber so hauts auf jedenfall schon besser hin :)
Gibt natürlich auch noch bessere Möglichkeiten, aber dann eher schon für Fortgeschrittene (Stichwort: MySQLi Prepared Statements)...

Aber trotzdem nette Arbeit, jeder fängt nunmal als "Anfänger" an :)

LG
03/13/2013 14:25 .NoThx#13
Vielen dank für dein Feedback, ich werde das Script evtl. Demnächst mal überarbeiten.