Minecraft (Game) webshop
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)
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
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();
?>
$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!
Alvast bedankt!
Gewijzigd op 14/06/2014 16:15:17 door - Ariën -
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.
Wat is je website?
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)
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"]."!
Thank you for your donation ".$_SESSION["user"]."!
Wat staat er letterlijk in je database nu? Staat daar in de betreffende kolom:
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
Code (php)
1
2
2
$user = $_SESSION["user"];
$ws->doCommandAsConsole("say Thank you for your donation " . $user . "!");
$ws->doCommandAsConsole("say Thank you for your donation " . $user . "!");
Of doet hij dan ingame "Thank You for your donation" . $user . "! "