PHP Variable in URL übergeben

Hallo, 2 Probleme habe ich mit einem script:

1.ich möchte eine Variable einer php datei per url übergeben:
Da ich leider sehr wenig Erfahrung habe mit PHP bin ich auf Hilfe angewiesen.Die gewünschte Variable lautet load_last_game.
Wäre folgendes dann richtig?
http://www…/server.php/?var=load_last_game
und wo muss der entsprechende $get_[var] Eintrag in die server.php?

muss bei Befehl $get [var] , var durch die variable ersetzt werden?oder nur um die variable ergänzt werden?
Ich dacht spontan an $_get [´var-load_last_game´]

sorry für alle die die Hände über den Kopf zusammenschlagen aber ich bin absoluter Anfänger.

2.Es geht darum einen Server zu erstellen der permanent im Hintergrund läuft, es dient einem Spiel als Grundlage.
Dazu habe ich in der server.php den Verweis auf die datei site_config.php
die IP des Server habe ich angegeben aber es erscheint der Fehler could not bind to adress.
Weiss jemand woran das liegen kann?

site_config.php:

<?php // Database
$dbserver = "mysql"; $dbhost = "localhost"; // database server IP $dbname = "\*\*\*\*"; // database name $dbuser = "\*\*\*0"; // username $dbpass = "\*\*\*\*\*"; // password // Config variables $admin\_login\_try = 5; // number if log-in tries before admin site blocking // Server config //$address = '127.0.0.1'; $address = '80.\*\*\*\*'; // game server IP $port = \*\*\*\*\*; // game server port // Connect to database $dblink = mysql\_connect($dbhost,$dbuser,$dbpass); mysql\_select\_db($dbname,$dblink); ?\> Vielen Dank für alle Antworten

moin

Hallo, 2 Probleme habe ich mit einem script:

mal sehen…

1.ich möchte eine Variable einer php datei per url übergeben:
Da ich leider sehr wenig Erfahrung habe mit PHP bin ich auf
Hilfe angewiesen.Die gewünschte Variable lautet
load_last_game.
Wäre folgendes dann richtig?
http://www…/server.php/?var=load_last_game

fast…
http://www…/server.php?var=load_last_game

und wo muss der entsprechende $get_[var] Eintrag in die
server.php?

da wo Du ihn halt brauchst…
Ich nehme an, dass Du die Variable $load_last_game brauchst?
Dann machst Du halt ein
$load_last_game = $_GET[‚var‘];
an den Anfang Deines Scripts…

muss bei Befehl $get [var] , var durch die variable ersetzt
werden?oder nur um die variable ergänzt werden?
Ich dacht spontan an $_get [´var-load_last_game´]

was baust Du denn da für abenteuerliche konstrukte…?
Beispiel: index.php?variable1=inhalt1&valiable2=inhalt2
mit
print_r($_GET);
wird dir angezeigt was übergeben wird.
nämlich einmal
$_GET[‚variable1‘] mit Inhalt „inhalt1“ und einmal
$_GET[‚variable2‘] mit Inhalt „inhalt2“
alles klar?

sorry für alle die die Hände über den Kopf zusammenschlagen
aber ich bin absoluter Anfänger.

merkt man *grins*

2.Es geht darum einen Server zu erstellen der permanent im
Hintergrund läuft, es dient einem Spiel als Grundlage.
Dazu habe ich in der server.php den Verweis auf die datei
site_config.php
die IP des Server habe ich angegeben aber es erscheint der
Fehler could not bind to adress.
Weiss jemand woran das liegen kann?

site_config.php:

<?php :
// Database $dbserver = "mysql"; $dbhost = "localhost"; // database server IP $dbname = "\*\*\*\*"; // database name $dbuser = "\*\*\*0"; // username $dbpass = "\*\*\*\*\*"; // password // Config variables $admin\_login\_try = 5; // number if log-in tries before admin site blocking // Server config //$address = '127.0.0.1'; $address = '80.\*\*\*\*'; // game server IP $port = \*\*\*\*\*; // game server port // Connect to database $dblink = mysql\_connect($dbhost,$dbuser,$dbpass); mysql\_select\_db($dbname,$dblink); ?\>

also wenn das alles ist, dann werden viele Variablen vergebens geladen.
In dem Script hier wird nur die Verbindung zur mysql-Datenbank hergestellt - nicht mehr und nicht weniger…

Grüsse
Munich

Vielen Dank Herr Munich für Ihre Zeit und wertvollen Antworten!

Kann es sein dass der could not bind error damit zu tun hat dass zur Mysql Datenbank falsch verbunden wird?evtl. user und password der Mysql Datenbank falsch?
oder hat das mit der IP zu tun?
komisch bei mir auf dem home windows pc läuft das alles ganz normal.
Ich starte die server.php mit variable load_last_game und der „server“ wird geladen. Dann gibts auch keine could not bind to adress probleme…

Vielen Dank Herr Munich für Ihre Zeit und wertvollen
Antworten!

keine Ursache :wink:
aber hier wird geduzt :wink:

Kann es sein dass der could not bind error damit zu tun hat
dass zur Mysql Datenbank falsch verbunden wird?evtl. user und
password der Mysql Datenbank falsch?

Nein…
das wäre eine andere Fehlermeldung…
falscher Server:
Warning: mysql_connect(): Unknown MySQL Server Host ‚servername‘ (11001) in c:\program files\easyphp\www\mel\connect.php on line 13
falscher User/falsches Passwort:
Warning: mysql_connect(): Access denied for user: ‚nachrichten@localhost‘ (Using password: YES) in c:\program files\easyphp\www\mel\connect.php on line 13

oder hat das mit der IP zu tun?
komisch bei mir auf dem home windows pc läuft das alles ganz
normal.

evtl ist der Server innerhalb Deines Netzwerks?
Dann wäre es klar, dass es nicht geht weil es nicht die Internet-IP sondern die Netzwerk-IP ist…

Ich starte die server.php mit variable load_last_game und der
„server“ wird geladen. Dann gibts auch keine could not bind to
adress probleme…

eine variable muss auch immer einen Inhalt haben. Eine Variable allein ist nur selten abgefragt.

nochmals danke!
wenn es die netzwerk IP ist, wie kann ich die abfragen bzw herausbekommen?
Folgend habe ich den Inhalt der server.php eingefügt,
vielleicht kannst du daraus ersehen woran es hapert…?!?
redwing

<?php /set_time_limit(0);
error\_reporting(1); include("message.php"); include("engine.php"); include("compression.php"); include("../Config/site\_config.php"); $max\_clients = 10; $water\_game = NULL; $water\_room\_id = NULL; $connected\_clients = NULL; $start\_time = getdate(); $old\_areas\_time = time(); $new\_areas\_time = 0; $end\_game\_flag = false; $client = array\_fill(0,$max\_clients,null); $sock = socket\_create(AF\_INET, SOCK\_STREAM, 0); socket\_bind($sock, $address, $port) or die('Could not bind to address'); socket\_listen($sock); $turn\_history = ""; echo("Server started "); if($\_SERVER['argv'][1]=="-load\_last\_game") { echo("Load last game... "); pre\_load\_game(); } while (true) { $read[0] = $sock; for ($i = 0; $i \< $max\_clients; $i++) { if ($client[$i]['sock'] != null) $read[$i + 1] = $client[$i]['sock']; } $ready = socket\_select($read,$write = null,$except = null,$tv = null); if (in\_array($sock, $read)) { for ($i = 0; $i \< $max\_clients; $i++) { if ($client[$i]['sock'] == null) { $client[$i]['sock'] = socket\_accept($sock); update\_game\_data(); break; } elseif ($i == $max\_clients - 1) print ("too many clients"); } if (--$ready \<= 0) continue; } $cur\_conn = count($client); $nbconnected = 0; for ($i = 0; $i \< $cur\_conn; $i++) if ($client[$i]['sock'] != null) $nbconnected++; $connected\_clients = $nbconnected; for ($i = 0; $i \< $cur\_conn; $i++) { if (in\_array($client[$i]['sock'] , $read)) { $input = socket\_read($client[$i]['sock'] , 1024); // citeste din socketu clientului cam vreo 1024 biti if ($input == null) { if($water\_game) $water\_game-\>DisconnectPlayer($client[$i]['name']); socket\_close($client[$i]['sock']); $client[$i]['sock'] = null; $client[$i]['name'] = null; $client[$i]['log'] = null;

nochmals danke!
wenn es die netzwerk IP ist, wie kann ich die abfragen bzw
herausbekommen?

das geht nicht…
Der Server muss aus dem Internet aus verfügbar sein - das scheint er nicht zu sein - damit geht das ganze nicht…
wenn dann müssen port und ip immer geforwarded werden und das ist nicht so trivial und vor allem je nach router unterschiedlich…

Folgend habe ich den Inhalt der server.php eingefügt,
vielleicht kannst du daraus ersehen woran es hapert…?!?

in dieser Zeile:
socket_bind($sock, $address, $port) or die(‚Could not bind to address‘);

notwendig für die weitere verarbeitung…
und die vermutung liegt nahe, dass das an der nicht zustande gekommenen Serververbindung liegt.

der server ist eine gemieteter managed server eines providers, die sind doch mit einer eigenen ip aus dem internet verfügbar soweit ich informiert bin. ich hab ja auch eine ip zugewiesen bekommen. 80…usw
Nach anfragen an den anbieter hat er auch das skriptime limit für den managed server aufgehoben.
Also irgenwie muss das doch gehen…(verzweifle)
gruss

beschreib mal die komplette Serverstruktur - dann kann ich Dir sagen ob bzw wie das gehen könnte - solange Du da ein Geheimnis draus machst und du selbst nicht kompetent genug bist es hinzubekommen weigere ich mich in einem fischlosen gewässer meine Angel auszuwerfen…

viel Glück
Munich

also hab es hinbekommen den server zu starten.
Sorry aber ich bin nunmal Anfänger der da erstmal ein wenig sich reinarbeiten muss :open_mouth:
Hab nun das Problem, dass der Server auf eine Datenbank zugreifen muss, was er aber nicht tut…gibt es in Phpmyadmin irgenwie eine Funktion die ich entsprechend aktivieren muss um den Zugang zu gewähren?Aber wenn es keinen Zugang geben würde hätte ich doch bestimmt eine Fehlermeldung…amateurhaftes Grübeln…

Das entsprechene Config file sieht so aus:

<?php // Database
$dbserver = "mysql"; $dbhost = "localhost"; // database server IP $dbname = "usr\_me0\_1"; // database name $dbuser = "me0"; // username $dbpass = "\*\*\*\*\*\*"; // password // Config variables $admin\_login\_try = 5; // number if log-in tries before admin site blocking // Server config $address = '8x.xx.xxx.xxx'; // Keno server IP $port = 12345; // Keno server port // Connect to database $dblink = mysql\_connect($dbhost,$dbuser,$dbpass); mysql\_select\_db($dbname,$dblink); ?\> müsste eigentlich zur datenbank problemlos verbinden... naja, möchte Dir auch nicht wirklich auf die Nerven gehen oder Deine Zeit rauben mit meinen Amateurproblemen :wink:

Hab nun das Problem, dass der Server auf eine Datenbank
zugreifen muss, was er aber nicht tut…gibt es in Phpmyadmin
irgenwie eine Funktion die ich entsprechend aktivieren muss um
den Zugang zu gewähren?

eigentlich nicht - aber die Zugangsdaten müssen halt stimmen…
Bei mir sieht das so aus:

$server[0] = "localhost"; // MySQL-Server
$server[1] = "root"; // MySQL-Benutzername
$server[2] = ""; // MySQL-Password
$db = "nachrichten"; //Name der Datenbank \*/
if (!$connect = mysql\_connect($server[0],$server[1],$server[2])) echo " Konnte nicht zu mySQL verbinden "; //Verbindet zum Mysql-Server
 else $connected = "true";
if (!mysql\_select\_db("$db")) echo " Datenbankverbindung fehlgeschlagen. "; //Verbindet zur Datenbank und erstellt diese falls nicht vorhanden

(ja, ohne Passwort - ist ja nur im lokalen Netzwerk erreichbar ^^)

Aber wenn es keinen Zugang geben würde
hätte ich doch bestimmt eine Fehlermeldung…amateurhaftes
Grübeln…

nicht zwanghaft…
bei schlechter konfiguration schluckt ein Server alle Fehler…

schreib ein
error_reporting(E_ALL);
in die erste Zeile Deines Scriptes und Du kannst sicher sein, dass Dir Fehler im Code angezeigt werden - und damit auch Fehler bei Datenbankverbindungen…

Das entsprechene Config file sieht so aus:

*snip*

$dblink = mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($dbname,$dblink);

wenn die Daten hier stimmen, dann geht das schon…

müsste eigentlich zur datenbank problemlos verbinden…
naja, möchte Dir auch nicht wirklich auf die Nerven gehen oder
Deine Zeit rauben mit meinen Amateurproblemen :wink:

kommt immer drauf an, wie ausgelastet ich bin *g*