beginnersvraag
Maar het standaardbegin lukt me nog niet echt.
Ik ben bijvoorbeeld begonne met een scriptje te schrijven waardoor het ip van de bezoeker van een pagina wordt gepost in de database.
Hou niet teveel rekening met veiligheid en dergelijke. Ik ben voorlopig al blij wanneer het ip wordt gepost.
Dit is wat ik heb geschreven:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if (isset($_GET['$REMOTE_ADDR'])) {
$ip = $REMOTE_ADDR;
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
?>
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if (isset($_GET['$REMOTE_ADDR'])) {
$ip = $REMOTE_ADDR;
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
?>
tabel stats heeft twee velden:
id (primary key int auto increment)
ip (text not null)
wat doe ik fout?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
?>
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','youwish');
define('SQL_DB','naamdb');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
$query = "INSERT INTO mobystats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
?>
Blij te zien dat ik toch niet zo een heel grote fout heb gemaakt.
Klopt. Het enige dat er vreemd aan was, was dat je er in je script van uit ging dat je het ip adres uit de GET variabele kon krijgen, terwijl hij gewoon rechtstreeks op te vragen is.
ip (text not null)
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
veiligheid
Ik heb er respect voor dat je daar nog niet te veel aandacht aan besteedt, maar ga je daar in de toekomst wél mee bezighouden, er zijn namelijk genoeg (censuur) die graag je database om zeep helpen.
Veel succes verder.
Dit is wat ik heb geschreven:
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
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
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER',blabla');
define('SQL_PASS','blabla');
define('SQL_DB',blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {
echo '.$result';
}
}
?>
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER',blabla');
define('SQL_PASS','blabla');
define('SQL_DB',blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {
echo '.$result';
}
}
?>
Bedoeling is dus dat de opgeslagen ipadressen uit de database worden gehaald en in kolomvorm worden weergegeven. Momenteel wordt er niets weergegeven en ik snap niet echt waarom niet. Om ze in kolomvorm weer te geven, hoe moet ik dat juist aanpakken? Iets in de aard van: for(i=0; i<$id; i++){...?
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
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
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','blabla');
define('SQL_DB','blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {?>
<td>
Resultaten
</td>
<?php
while($info=mysql_fetch_array($result))
{?>
<tr>
<td>
<?php echo $info['ip']; ?>
</td>
<tr>
<?php
}
}
?>
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','blabla');
define('SQL_DB','blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {?>
<td>
Resultaten
</td>
<?php
while($info=mysql_fetch_array($result))
{?>
<tr>
<td>
<?php echo $info['ip']; ?>
</td>
<tr>
<?php
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Parse error: syntax error, unexpected $end in /home/mobyhost/public_html/mobystatsss.php on line 51
Heb al aanhalingsteken proberen te plaatsen op lijn 50, maar zonder resultaat.
Moet nog een } aan het einde
Ik krijg volgende error:
Parse error: syntax error, unexpected $end in /home/mobyhost/public_html/mobystatsss.php on line 52
dit is het script dat ik draai:
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
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
<?php
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','blabla');
define('SQL_DB','blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {?>
/*Vul hier je hostname, user, password en database in.*/
define('SQL_HOST','localhost');
define('SQL_USER','blabla');
define('SQL_PASS','blabla');
define('SQL_DB','blabla');
$conn = mysql_connect(SQL_HOST, SQL_USER, SQL_PASS) or die(' Kan niet met database verbinden; ' . mysql_error());
mysql_select_db(SQL_DB, $conn) or die('Kan geen database selecteren; ' . mysql_error());
if ($ip = $_SERVER['REMOTE_ADDR']){
$query = "INSERT INTO stats(ip) VALUES('$ip')";
mysql_query($query, $conn) or die(mysql_error());
}
else {
$query = "SELECT * FROM stats ORDER BY id DESC";
$result = mysql_query($query) or die("Failed");
if (mysql_num_rows($result) == 0) {
echo"Database is empty";
}
else {?>
<td>
Resultaten
</td>
<tr>
<td>
</td>
<tr>
is altijd waar, je zal dus == moeten gebruiken, maar ik snap niet watje wilt...
gewoon beetje testen met db's. Ip erinzetten en terug laten weergeven door het uit db te halen.
maar ook indien ik = verander in == lost het niets op.
ok, we zijn al iets verder nu. Geen error niet meer. Maar nu wordt de inhoud van de db nog niet weergegeven. En ja, er zijn 56 records aanwezig :-)
SanThe:
ip (text not null)
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
Aanvulling: bij een VARCHAR kun je net zo goed altijd 255 opgeven. MySQL pakt namelijk precies zoveel geheugen als nodig is.
dan kunnen er namelijk (door een fout) GEEN waarden langer dan 15 tekens in. en is wel overzichtelijker aan wat er in dat veld moet komen
Jan:
Aanvulling: bij een VARCHAR kun je net zo goed altijd 255 opgeven. MySQL pakt namelijk precies zoveel geheugen als nodig is.
SanThe:
ip (text not null)
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
Daar kan heel wat in en een ip nummer inclusief puntjes is nooit groter dan 15 characters dus een varchar(15) is groot genoeg.
Aanvulling: bij een VARCHAR kun je net zo goed altijd 255 opgeven. MySQL pakt namelijk precies zoveel geheugen als nodig is.
Maar als je 255 pakt dan houd die nog staat geheugen vast, voor het geval dat.
Het klopt dan wel dat die die geheugen niet gebruikt maar hij reseveerd het wel.
ok, kzal er eens over nadenken of ik er nu een cijfer al dan niet achter zet, maar dat lost mijn probleem natuurlijk niet op. :-)