mysql receave url and redirect
en in die table staat url en dan de panel url
wat mij code dus moet doen is de gameid uit de sessie halen vervolgens connecteren naar de sql db en dan de table (de gameid) en dat in de row url en dan naar de url redirecteren
maar ik krijg steeds : http://gmforce.co.cc/Location=$gameid of http://gmforce.co.cc/recourceid #5
??
weet iemand hoe ik dit oplos?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT * FROM $gameid WHERE url=''";
$result=mysql_query($sql);
header('Refresh: 10; Location=$gameid');
echo 'Over 10 seconden word je doorgestuurd.';
?>
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT * FROM $gameid WHERE url=''";
$result=mysql_query($sql);
header('Refresh: 10; Location=$gameid');
echo 'Over 10 seconden word je doorgestuurd.';
?>
je kan het proberen www.gmforce.co.cc
en dan inloggen met
username : mmuziek
pass : mmuziek
gameid : megaword
Graag niet bumpen; twee berichten van jezelf na elkaar binnen 24 uur plaatsen. Heb je een toevoeging aan je vorige bericht, gebruik dan het 'wijzigen' icoontje.[/modedit]
Gewijzigd op 06/06/2010 19:17:17 door Joren de Wit
2. er ontbreekt het een en ander
-> session start
-> controle en validatie
-> foutafhandeling
3. php-variabelen buiten quotes
4. or die () is struisvogelpolitiek, pas fatsoenlijk foutafhandeling toe
5. ongehoord databasemodel, ga normaliseren
6. als je database tabellen gaat missen, dan moet je vooral op deze manier code implementeren, maw bescherm je tegen SQL injectie
onderstaande code is bijna gelijk aan wat er uitgevoerd wordt:
Code (php)
1
2
3
4
2
3
4
<?php
session_start();
header('Refresh: 10; Location='.(isset($_SESSION['gameid']) && trim($_SESSION['gameid']) != '' ? $_SESSION['gameid'] : '1')));
?>
session_start();
header('Refresh: 10; Location='.(isset($_SESSION['gameid']) && trim($_SESSION['gameid']) != '' ? $_SESSION['gameid'] : '1')));
?>
Gewijzigd op 06/06/2010 14:34:09 door Noppes Homeland
$vars buiten de quotes houden.
- Je SQL query selecteert nu records uit de tabel $gameid waar geen url ingevuld is (waarbij de waarde van $gameid uit de sessievariabele komt). Klopt dat?
- Je voert de query vervolgens wel uit, maar doet verder niets met het resultaat. In plaats daarvan stuur je de gebruiker direct door naar de url $gameid, waarvan de waarde eerst nog een tabelnaam voorstelde?
Loop je code nog eens goed na en probeer te begrijpen wat er precies gebeurt. Dan zul je zelf wel zien dat het eigenlijk nergens op slaat :-)
edit: Te laat uiteraard... :-)
Gewijzigd op 06/06/2010 14:29:18 door Joren de Wit
login>checklogin>dit script
dit script krijgt de value van de vorige script gameid dus.
de table in de sql heeft de game id naam dus stel Gameid = paardelopen
dan heet de table paardelopen.
vervolgens probeer ik het de url van die table te halen die er al ingeprogrameerd is
ik zag dat ik de oude code gaf..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT * FROM $gameid WHERE url=''";
$result=mysql_query($sql);
header('Refresh: 10; Location=$result');
echo 'Over 10 seconden word je doorgestuurd.';
?>
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT * FROM $gameid WHERE url=''";
$result=mysql_query($sql);
header('Refresh: 10; Location=$result');
echo 'Over 10 seconden word je doorgestuurd.';
?>
dit krijg ik als ik em nu draai
http://gmforce.co.cc/Location=$result
de url van de sql hoort op de plaats te komen van de hele url
dus http://gmforce.co.cc/users/megaword < dit staat onder url in de mysql table
Je zit nu overigens met een rewrite probleem, maar het lijkt mij verstandiger om eerst de punten aan te pakken welke genoemd zijn.
Gewijzigd op 06/06/2010 22:04:19 door Noppes Homeland
url is ingevult in de database
je zegt dat er dingen ontbreken en klaagt over mijn fout rapportering
1. strings quote je bij voorkeur met '' < onthoudt ik maar maakt bijna geen verschil
2. er ontbreekt het een en ander
-> session start < is al in een eerder script gebeurd
-> controle en validatie < is ook al in eerdere scripts gebeurd de data die hij ontvangt is al meerdere malen gecontroleerd
-> foutafhandeling < or die. error ..
3. php-variabelen buiten quotes < die snap ik niet
4. or die () is struisvogelpolitiek, pas fatsoenlijk foutafhandeling toe < laat maar zien
5. ongehoord databasemodel, ga normaliseren < die snap ik ook niet
6. als je database tabellen gaat missen, dan moet je vooral op deze manier code implementeren, maw bescherm je tegen SQL injectie < weet niet wat maw is ga jij maar uitleggen hoe ik een database anders maak..
-> het gaat ook om het niet onnodig te hoeven escapen
-> overzichtelijkheid
-> leesbaarheid
2. tja daar kom je dan 4 uur te laat mee
3. zie 1
4. fatsoenlijke foutafhandeling is dat je script niet stopt en dat de code die afhankelijk is van de query die fout is gegaan op correcte wijze wordt afgehandeld, door bijvoorbeeld de mysql_error weg te schrijven in een file en een nette meldiing te geven dan wel er voor te zorgen dat de rest van de code door default settings correct wordt doorlopen
5. zoek het internet maar af op de trefwoorden: datbasenormalisatie
6. maw == m.a.w. - met andere woorden -, en ook het begrip SQL Injectie kan je vinden door te zoeken
normaliseren is gewoon handig als je meer overzicht wilt.
en die quotes enzo is puur overzicht..
die fouten afhandelink zou ik niet weten hoe aangezien ik een gedeeltelijke beginner ben en mijn script maak met kleine stukjes code.
dus graag uitleg wat ik nu moet veranderen (voor mn script niet voor overzicht)
en dan graag als het kan een stukje code erbij.
Mar groen op 07/06/2010 08:26:37:
normaliseren is gewoon handig als je meer overzicht wilt.
Fout! Normaliseren is juist noodzakelijk als je niet tegen problemen aan wilt lopen! Werken met een incorrect datamodel resulteert op een gegeven moment in problemen die niet redelijkerwijs meer op te lossen zijn. Je gaat dan op zoek naar omwegen met hele lappen PHP code, als dat al mogelijk is. Die variabele tabelnamen zijn al 1 voorbeeld waar het fout gaat.
Verder gaat het in je script fout bij de basis. De volgorde om iets uit de database te selecteren is altijd query opstellen > query uitvoeren > resultaat fetchen. De laatste stap ontbreekt in jouw geval nog. Lees bijvoorbeeld eens deze SQL beginnershandleiding om te zien hoe je werkt met een database.
ID URL GAMENAME >>>
De id voor datawijzeging
url voor redirect
Gamename voor payment en panel.
en de rest doet er niet toe
ik vraag om uitleg hierbij en hoe ik het oplos ik kan bijna wedden dat het niet aan de DB ligt
dus als het mogelijk is beetje hulp en misshien een stukje code om mij op weg te helpen.
Dit is de query die jij gebruikt. In de WHERE zeg je dat er een record opgehaald moet worden waar de url leeg is. Dat lijkt me onlogisch als je juist een url uit je tabel wilt selecteren. Bevat de 'Gamename' kolom dezelfde waarde als het gameid, dus uit jouw voorbeeld paardelopen? Zo ja, dan zou je daarop moeten selecteren in je WHERE clausule.
Dan tenslotte nog: je vraagt om hulp, maar als je dan goede hulp krijgt wijs je die direct van de hand als niet ter zake zijnde en wil je per se op de foute manier verder geholpen worden. Dat snap ik niet. Er zijn genoeg goede aanwijzingen gegeven, maar daar doe je blijkbaar niets mee. Heb je bijvoorbeeld die SQL beginnershandleiding al doorgenomen? Kortom, misschien is het handig om goede adviezen niet direct in de wind te slaan en eens te kijken wat men nu precies bedoelt en misschien toch die methode gebruiken...
ik ben een autist. geen werk zit dus al 3 jaar thuis. irri. dus ik vind het lastig om verwezen te worden naar verschillende 10 paginas lange tutorials. terwijl de oplossing meestal in 1 regel past.
maarja back to topic
dit is mijn code nu aangepast
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT url FROM $gameid";
$result=mysql_query($sql);
header('Refresh: 3; Location=$result');
echo 'Over 3 seconden word je doorgestuurd.';
?>
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT url FROM $gameid";
$result=mysql_query($sql);
header('Refresh: 3; Location=$result');
echo 'Over 3 seconden word je doorgestuurd.';
?>
het enige waar ik nog tegenaanloop is de header redirect
die maar Location=$result doorgeeft inplaats van de value $result
Gewijzigd op 07/06/2010 11:34:57 door mar groen
Ik raad je toch echt aan om die handleiding eens door te lezen, daar staat dit namelijk allemaal in uitgelegd. Bovendien komt daar het onderwerp foutafhandeling ook aan de orde, iets dat in jouw script nu nog ontbreekt.
tevens heb ik ook the fetch toegepast en dit is mijn code nu:
ik krijg nog steeds http://gmforce.co.cc/Location=$row
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
27
28
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
27
28
<?php
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT url FROM $gameid";
if (!$result=mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($result) == 0)
{
echo 'Geen resultaten gevonden<br />';
}
else
{
while($row = mysql_fetch_assoc($result))
{
header('Refresh: 3; Location=$row');
echo $row['url'].'<br />';
echo 'Over 3 seconden word je doorgestuurd.';
}
}
?>
include "check.php";
include "config.php";
$gameid = $_SESSION['gameid'];
mysql_connect("$host", "$username", "$pass")or die("cannot connect");
mysql_select_db("$db")or die("this game panel has not been activated or does not exist please contact our support for more info");
$sql="SELECT url FROM $gameid";
if (!$result=mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($result) == 0)
{
echo 'Geen resultaten gevonden<br />';
}
else
{
while($row = mysql_fetch_assoc($result))
{
header('Refresh: 3; Location=$row');
echo $row['url'].'<br />';
echo 'Over 3 seconden word je doorgestuurd.';
}
}
?>
SanThe Nvt op 06/06/2010 14:27:48:
$vars buiten de quotes houden.
Dat daar steeds $row staat komt door de quotes.
dat doe ik nu dus dan krijg ik dit
Quote:
header('Refresh: 3; Location='$row);
dan krijg ik:
Parse error: syntax error, unexpected T_VARIABLE in /home/mmuziek/public_html/klanten/gmforce.co.cc/login_success.php on line 22
word een beetje lastig ..
misschien is het beter om de redirect te veranderen naat click here to open your panel..
Gewijzigd op 07/06/2010 18:48:56 door mar groen
Gewijzigd op 07/06/2010 18:48:42 door mar groen
Lees nu alsjeblieft eens op php.net wat de functies doen, zo moelijk moet dat toch niet zijn:
http://www.php.net/mysql_fetch_assoc
die code heb ik geprobeert werkte niet. dus ja ik heb het al gefixt