bug in MYSQL query
kan iemand hier de fout in vinden:
Het geeft een totaal lege pagina die firefox 3 je laat downloaden.
BVD Joris
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
//TOP
include "top.php";
?>
<script>
function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}
</script>
<div id="body">
<div id="body-leftside">
<div id="scroll_top"><span id="scroll_header">MENU </span></div>
<div id="scroll_middle">
<a href="index.php" class="main_menu">Home</a>
<a href="new.php" class="main_menu">Aanmelden</a>
<a href="ledenlijst.php" class="main_menu">Leden</a>
<div class="menu_separator">
<div class="separator_text">Login</div>
</div>
<div class="center">
<form action="game/login.php" METHOD="post">
<input type="text" name="naam" value="Gebruikersnaam" onFocus="clearText(this)">
<input type="password" name="w8woord" value="Wachtwoord" onFocus="clearText(this)"><br />
<input type="submit" value="Login!">
</form>
</div>
</div>
<div id="scroll_bottom"></div>
<div class="center">
<br /><br /><br />
</div>
</div>
<div id="body-rightside">
<h1>Aanmelden</h1>
<p class="justify">
<?php
include "mysql.php";
$x = $_GET['x'];
if(isset($x)){
if ($x == "nieuw"){
$username = $_POST['naam'];
$password = $_POST['pass'];
$pass1 = $_POST['pass1'];
if($password != $pass1){
echo "De twee wachtwoorden zijn niet hetzelfde!";
}else{
$query = mysql_query("SELECT * FROM users WHERE Naam ='$username'");
$aantalrijen = mysql_num_rows($query);
if($aantalrijen >= 1){
print "De gebruikersnaam bestaat al...";
}else{
mysql_query("INSERT INTO spelers (naam, wachtwoord, HP, MP, lvl, goud, exp, Wapen, vijanden, HPP, MPP, tHP, homepage,skill_mp, skill_fire, skill_tornado, skill_ghost,skill_healen) VALUES ('$username','$password','200','200','1','100','0','Zwaard','0','0','0','Nog geen homepage ingesteld!','false','false','false','false','false') ") or die(mysql_error());
?>
Welkom, Je account is aangemaakt.<br><br>
<a href="game/index.php">Klik hier om te beginnen</a>
<?php
}
}
}
}else{
?>
<form method="POST" action="nieuw.php?x=nieuw">
Naam:<br>
<input type="text" name="naam" size="20"><br>
Wachtwoord:<Br>
<input type="password" name="pass" size="20"><br>
Wachtwoord herahalen:<br>
<input type="password" name="pass1" size="20"><br>
<br>
<input type="submit" value="Maak" name="B1">
</form>
<?php
}
?>
</div>
</div>
<?php
//BOTTOM
include "bottom.php";
?>
//TOP
include "top.php";
?>
<script>
function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}
</script>
<div id="body">
<div id="body-leftside">
<div id="scroll_top"><span id="scroll_header">MENU </span></div>
<div id="scroll_middle">
<a href="index.php" class="main_menu">Home</a>
<a href="new.php" class="main_menu">Aanmelden</a>
<a href="ledenlijst.php" class="main_menu">Leden</a>
<div class="menu_separator">
<div class="separator_text">Login</div>
</div>
<div class="center">
<form action="game/login.php" METHOD="post">
<input type="text" name="naam" value="Gebruikersnaam" onFocus="clearText(this)">
<input type="password" name="w8woord" value="Wachtwoord" onFocus="clearText(this)"><br />
<input type="submit" value="Login!">
</form>
</div>
</div>
<div id="scroll_bottom"></div>
<div class="center">
<br /><br /><br />
</div>
</div>
<div id="body-rightside">
<h1>Aanmelden</h1>
<p class="justify">
<?php
include "mysql.php";
$x = $_GET['x'];
if(isset($x)){
if ($x == "nieuw"){
$username = $_POST['naam'];
$password = $_POST['pass'];
$pass1 = $_POST['pass1'];
if($password != $pass1){
echo "De twee wachtwoorden zijn niet hetzelfde!";
}else{
$query = mysql_query("SELECT * FROM users WHERE Naam ='$username'");
$aantalrijen = mysql_num_rows($query);
if($aantalrijen >= 1){
print "De gebruikersnaam bestaat al...";
}else{
mysql_query("INSERT INTO spelers (naam, wachtwoord, HP, MP, lvl, goud, exp, Wapen, vijanden, HPP, MPP, tHP, homepage,skill_mp, skill_fire, skill_tornado, skill_ghost,skill_healen) VALUES ('$username','$password','200','200','1','100','0','Zwaard','0','0','0','Nog geen homepage ingesteld!','false','false','false','false','false') ") or die(mysql_error());
?>
Welkom, Je account is aangemaakt.<br><br>
<a href="game/index.php">Klik hier om te beginnen</a>
<?php
}
}
}
}else{
?>
<form method="POST" action="nieuw.php?x=nieuw">
Naam:<br>
<input type="text" name="naam" size="20"><br>
Wachtwoord:<Br>
<input type="password" name="pass" size="20"><br>
Wachtwoord herahalen:<br>
<input type="password" name="pass1" size="20"><br>
<br>
<input type="submit" value="Maak" name="B1">
</form>
<?php
}
?>
</div>
</div>
<?php
//BOTTOM
include "bottom.php";
?>
Het geeft een totaal lege pagina die firefox 3 je laat downloaden.
BVD Joris
Gesponsorde koppelingen:
Lege output, of ook geen bron?
allebei
wat geeft een lege pagina, direct vanaf het begin of pas nadat je op submit hebt gedrukt?
Houd er overigens rekening mee dat je met dit script je database zo kan laten legen, oftewel gevoelig voor mysql injection.
Houd er overigens rekening mee dat je met dit script je database zo kan laten legen, oftewel gevoelig voor mysql injection.
direct vanaf het begin.
Ik ben een n00b in mysql. Kan je helpen?
Ik ben een n00b in mysql. Kan je helpen?
Dan zal de fout denk ik in je top.php zitten.
En om mysql-injections tegen te gaan: (regel 48,49,50)
En om mysql-injections tegen te gaan: (regel 48,49,50)
En waar controleer je of je queries wel gelukt zijn? Precies nergens...
Zorg dat de error_reporting instelling van PHP op de hoogste stand staat en zorg dat PHP fouten weergegeven worden door de display_errors instelling in je php.ini in te schakelen.
Vervolgens zul je voor elke query die je uitvoert moeten controleren of die gelukt is, en zo niet dan zul je met mysql_error() een foutmelding willen geven...
Zorg dat de error_reporting instelling van PHP op de hoogste stand staat en zorg dat PHP fouten weergegeven worden door de display_errors instelling in je php.ini in te schakelen.
Vervolgens zul je voor elke query die je uitvoert moeten controleren of die gelukt is, en zo niet dan zul je met mysql_error() een foutmelding willen geven...
dit is mijn top.php
en het resultaat is hier te zien klik op aanmelden:
http://legend4you.freehostia.com/
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
29
30
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
29
30
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<title>Truelegend |-| Red Jezelf!</title>
</head>
<body>
<div id="megabg_container">
<div id="bg_container">
<div id="container">
<div id="header">
<!-- <img src="img/top_img.jpg" alt="" style="margin:0 auto 0 auto;"/> -->
<span id="header_text"><img src="img/title.gif" /></span>
</div>
<div id="menu_sword">
<div id="tabs" class="noprint">
<h3 class="noscreen">Navigation</h3>
<ul>
<li><a href="index.php" class="sword_menu"><span class="shadow"> HOME </span><span class="text"> HOME </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
<li><a href="new.php" class="sword_menu"><span class="shadow"> AANMELDEN </span><span class="text"> AANMELDEN </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
<li><a href="ledenlijst.php" class="sword_menu"><span class="shadow"> LEDEN </span><span class="text"> LEDEN </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
</ul>
<hr class="noscreen" />
</div>
</div>
<img src="img/menu_sword_right.jpg" alt="" style="float:right;"/>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="css/main.css" />
<title>Truelegend |-| Red Jezelf!</title>
</head>
<body>
<div id="megabg_container">
<div id="bg_container">
<div id="container">
<div id="header">
<!-- <img src="img/top_img.jpg" alt="" style="margin:0 auto 0 auto;"/> -->
<span id="header_text"><img src="img/title.gif" /></span>
</div>
<div id="menu_sword">
<div id="tabs" class="noprint">
<h3 class="noscreen">Navigation</h3>
<ul>
<li><a href="index.php" class="sword_menu"><span class="shadow"> HOME </span><span class="text"> HOME </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
<li><a href="new.php" class="sword_menu"><span class="shadow"> AANMELDEN </span><span class="text"> AANMELDEN </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
<li><a href="ledenlijst.php" class="sword_menu"><span class="shadow"> LEDEN </span><span class="text"> LEDEN </span><span class="tab-l"></span><span class="tab-r"></span></a></li>
</ul>
<hr class="noscreen" />
</div>
</div>
<img src="img/menu_sword_right.jpg" alt="" style="float:right;"/>
en het resultaat is hier te zien klik op aanmelden:
http://legend4you.freehostia.com/
ik verwacht dat ze lukken ;p
@Joris;
Maar dat doen ze niet altijd, er kan altijd iets mislopen waardoor je queries (ik denk dat je dat bedoelt) fout gaan. Foutafhandeling is een must voor een professionele scripter.
- edit -
@Crispijn;
Hoezo is deze post grote onzin?
Maar dat doen ze niet altijd, er kan altijd iets mislopen waardoor je queries (ik denk dat je dat bedoelt) fout gaan. Foutafhandeling is een must voor een professionele scripter.
- edit -
@Crispijn;
Hoezo is deze post grote onzin?
Gewijzigd op 01/01/1970 01:00:00 door Douwe
Ja, en dan wel topics openen op phphulp omdat je de fout niet kan zien... Lekker handig he ;) Foutafhandeling is vooral erg belangrijk in de ontwikkelfase. Waarom lukken dingen die je wil niet? Precies, informatie over de uitvoer is dan onmisbaar... Die post hierboven is dus echt grote onzin ;)
kan iemand met de foutafhandeling helpen dan...
Nog nooit gedaan
Nog nooit gedaan
@Joris;
De simpelste foutafhandeling is achteraan de query (net tussen ) en ; ) het volgende neer te zetten:
or die(mysql_error())
Als je je site online gaat zetten moet je dit weer vervangen door een beter errorlogging systeem.
De simpelste foutafhandeling is achteraan de query (net tussen ) en ; ) het volgende neer te zetten:
or die(mysql_error())
Als je je site online gaat zetten moet je dit weer vervangen door een beter errorlogging systeem.
gewoon doen: $query=mysql_query("....Je Query....") or die(mysql_error());
or die is niet zo'n nette oplossing. Deze is al beter:
edit: uitroepteken vergeten
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$res = mysql_query($sql);
if(!$res){
trigger_error(mysql_error());
echo '<br />query: '. $sql;
}else{
//je uitvoer
}
?>
$res = mysql_query($sql);
if(!$res){
trigger_error(mysql_error());
echo '<br />query: '. $sql;
}else{
//je uitvoer
}
?>
edit: uitroepteken vergeten
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -



