Minecraft (Game) webshop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

31/03/2013 17:09:02
Quote Anchor link
Hallo.

Ik ben sinds vandaag begonnen met het maken van een webshop voor me game server. Ik ben al aardig ver maar zit met 1 vervelend probleem waar ik niet uit kom.

Dit is wat ik nu heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
    $result_ranks
  = mysql_query("SELECT * FROM `products_ranks` WHERE `id` = '".$_SESSION["id"]."'");
$products_data_ranks = mysql_fetch_array($result_ranks, MYSQL_ASSOC);
    
$command1 = $products_data_ranks['command1'];
$command2 = $products_data_ranks['command2'];
$command3 = $products_data_ranks['command3'];
$command4 = $products_data_ranks['command4'];
$command5 = $products_data_ranks['command5'];
$command6 = $products_data_ranks['command6'];
$command7 = $products_data_ranks['command7'];
$command8 = $products_data_ranks['command8'];
    
    $ws = new Websend("5.135.178.40");
    $ws->connect("donateminecraftserverstadiocraft");
    $ws->doCommandAsConsole("say ".$command1."");
    $ws->doCommandAsConsole("".$command2."");
    $ws->doCommandAsConsole("".$command3."");
    $ws->doCommandAsConsole("".$command4."");
    $ws->doCommandAsConsole("".$command5."");
    $ws->doCommandAsConsole("".$command6."");
    $ws->doCommandAsConsole("".$command7."");
    $ws->doCommandAsConsole("".$command8."");
    $ws->doCommandAsConsole("say Thank you for your donation ".$_SESSION["user"]."!");
    $ws->disconnect();
?>


(Er is meer code, dit is het verbinding gebied)

Een van de laatste lijnen staat dit:
$ws->doCommandAsConsole("say Thank you for your donation ".$_SESSION["user"]."!");
Als ik het script test dan zegt hij in het spel ook de naam van de gebruiker (de session user dus).
Nu heb ik gedaan dat ik zelf producten kan toevoegen aan de webshop. Hij haalt de producten op via een ID (dat werkt ook allemaal prima). Nu gebeurt er als ik via PHPmyadmin de command toevoeg dat er dan in het spel dit terechtkomt:
Thank you for your donation ".$_SESSION["user"]."!

De session user wordt niet vervangen door de gebruikers naam. Als ik het los in het scriptje zet dan gebeurt het wel, maar via mysql tabeltje ophalen dan niet.

Weet iemand de oplosing van deze fout?

Gr,
Stan
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Alvast bedankt!
Gewijzigd op 14/06/2014 16:15:17 door - Ariën -
 
PHP hulp

PHP hulp

19/04/2024 02:13:49
 
Koen Vlaswinkel

Koen Vlaswinkel

31/03/2013 19:16:43
Quote Anchor link
Je hebt geen session aangemaakt dus hoe wil je $_SESSION dan hebben? Je zult het script moeten aanroepen met GET of POST. Google er maar op.
 
John De Zon

John De Zon

14/06/2014 12:27:46
Quote Anchor link
Wat is je website?
 

14/06/2014 15:51:55
Quote Anchor link
Hey Stan,

Ik wil wel graag helpen want ik vind het leuk om te programmeren en ik ben een enorme fan van MineCraft.
Dus heb je hul et iets nodig? Stuur ff een PM of reageer hier ff!

Greetz, Pascal (ign: pascalgerrist)
 
Erwin H

Erwin H

14/06/2014 17:10:34
Quote Anchor link
Gewoon voor de grap hoor, maar probeer eens uit te leggen wat deze quotes in het luchtledige voor nut hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$ws
->doCommandAsConsole("".$command2."");
?>


Toevoeging op 14/06/2014 17:16:47:

Stan van Langen op 31/03/2013 17:09:02:
Nu gebeurt er als ik via PHPmyadmin de command toevoeg dat er dan in het spel dit terechtkomt:
Thank you for your donation ".$_SESSION["user"]."!

Wat staat er letterlijk in je database nu? Staat daar in de betreffende kolom:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Thank you for your donation ".$_SESSION["user"]."!


In dat geval is het nogal logisch. Dat is gewoon een string en die string wordt gewoon naar de client gestuurd. Daar wordt niets mee gedaan, er wordt variable expansion toegepast. Je $_SESSION wordt dus gewoon niet gezien als een variabele.

Een oplossing zou kunnen zijn om niet $_SESSION['user'] in je string te zetten, maar een placeholder. Bijvoorbeeld {username}. Nadat je het commando dan uit de database haalt vervang je alle placeholders via een str_replace met de sessie waardes.

[disclaimer]IK ZOU DIT NOOIT DOEN[/disclaimer]
Een andere oplossing zou zijn er een eval overheen te gooien nadat je het uit de database haalt. Weet alleen wel dat dat een groot risico inhoudt.
Gewijzigd op 14/06/2014 17:17:29 door Erwin H
 

14/06/2014 18:23:36
Quote Anchor link
of je doet dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$user = $_SESSION["user"];
$ws->doCommandAsConsole("say Thank you for your donation " . $user . "!");


Of doet hij dan ingame "Thank You for your donation" . $user . "! "
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.