IP Adres opslaan in database.
Beste,
voor mijn berichtenbalk zou ik graag iets extra erbij willen.
Dit is nu mijn script:
Ik zou graag als iemand een bericht post, ook dat z'n ip adres wordt opgeslagen in mijn database.
Maar hoe sla ik het op? En Hoe moet ik mijn tabel in mijn database maken?
Ik ondersteun php 5.2 en en mysql 5.1
Alvast bedankt!
voor mijn berichtenbalk zou ik graag iets extra erbij willen.
Dit is nu mijn script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include('config.php');
include('functions.php');
if($_SERVER['REQUEST_METHOD']=="POST") {
header('location:http://www.smik.tk/gepost.php');
$sql = "INSERT INTO balk SET id = '', naam ='".$_POST['naam']."', bericht='".$_POST['bericht']."'";
mysql_query($sql);
$post = smilie($_POST['bericht']);
echo "U heeft het volgende bericht gepost: <br>".$post.".";
}
else {
?>
include('config.php');
include('functions.php');
if($_SERVER['REQUEST_METHOD']=="POST") {
header('location:http://www.smik.tk/gepost.php');
$sql = "INSERT INTO balk SET id = '', naam ='".$_POST['naam']."', bericht='".$_POST['bericht']."'";
mysql_query($sql);
$post = smilie($_POST['bericht']);
echo "U heeft het volgende bericht gepost: <br>".$post.".";
}
else {
?>
Ik zou graag als iemand een bericht post, ook dat z'n ip adres wordt opgeslagen in mijn database.
Maar hoe sla ik het op? En Hoe moet ik mijn tabel in mijn database maken?
Ik ondersteun php 5.2 en en mysql 5.1
Alvast bedankt!
- Die header()-location staat op een verkeerde plek. je wilt eerst kijken of de querie uitgevoerd is, waarna je de header() pas uitvoert. Op deze maniet zal je query nu nooit uitgevoerd worden.
- SQL injectie in mogelijk. Gebruik mysql_real_escape_string() over je POST-variabele heen.
- Ik mis foutafhandeling op je query. Zodra je query is gelukt plaats je de header()
- Een IP kan je opvragen met $_SERVER['REMOTE_ADDR'], en deze kan je in de INSERT-query verwerken. $REMOTE_ADDR is al vele jaren verouderd en zal tegenwoordig geen IP meer geven en dus leeg zijn.
- SQL injectie in mogelijk. Gebruik mysql_real_escape_string() over je POST-variabele heen.
- Ik mis foutafhandeling op je query. Zodra je query is gelukt plaats je de header()
- Een IP kan je opvragen met $_SERVER['REMOTE_ADDR'], en deze kan je in de INSERT-query verwerken. $REMOTE_ADDR is al vele jaren verouderd en zal tegenwoordig geen IP meer geven en dus leeg zijn.
Dus eigenlijk voor het ip adres, moet ik dit er nog bijvoegen:
ip ='".$_POST[$_SERVER['REMOTE_ADDR']]."'
ip ='".$_POST[$_SERVER['REMOTE_ADDR']]."'
Snap je waarvoor post word gebruikt?
ip = '" . $_SERVER['REMOTE_ADDR'] . "'
ip = '" . $_SERVER['REMOTE_ADDR'] . "'
Ik denk het niet als ik jou was zal ik eens de php beginners handleiding doorlezen.
En laat die quotes ook gelijk maar weg.
Dem Ian op 06/11/2011 12:53:31:
Dus eigenlijk voor het ip adres, moet ik dit er nog bijvoegen:
ip ='".$_POST[$_SERVER['REMOTE_ADDR']]."'
ip ='".$_POST[$_SERVER['REMOTE_ADDR']]."'
$_POST[$_SERVER['REMOTE_ADDR']]
Dit is onzin, lees mijn reactie maar eens goed.
Dus,
ik moet gewoon dit zetten: $_SERVER['REMOTE_ADDR']
En daarna moet ik dit oproepen via:
ip ='".$_POST[REMOTE_ADDR]."'
Ofzo?
ik moet gewoon dit zetten: $_SERVER['REMOTE_ADDR']
En daarna moet ik dit oproepen via:
ip ='".$_POST[REMOTE_ADDR]."'
Ofzo?
- Aar - op 06/11/2011 12:40:51:
Een IP kan je opvragen met $_SERVER['REMOTE_ADDR']
Weet ik ook al indertussen.
Maar waar moet ik het plaatsen?
Maar waar moet ik het plaatsen?
Jordi kroon op 06/11/2011 13:10:34:
als ik jou was zal ik eens de php beginners handleiding doorlezen.
Dit zou zoiets kunnen worden. Ik weet natuurlijk ook niet hoe config.php en functions.php in elkaar zitten...
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("config.php"); // Configuratie bestand
include("functions.php"); // Standaard functies
// Als er op post gedrukt wordt:
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Stuur de gebruiker door naar gepost.php (weet ik niet wrm, maarja):
// Ik denk dat dit hier ook niet hoor, eerst doorsturen en dan pas de query uitvoeren???
// Hoe doe je dat en waarom toon je dan nog dat het bericht gepost is?
header("Location: http://www.smik.tk/gepost.php"); // Dus ik denk dat dit weg moet :p
// De database connectie (je kan ook natuurlijk config.php of functions.php gebruiken:
$Conn = mysqli_connect(MYSQLI_SERVER, MYSQLI_USERNAME, MYSQLI_PASSWORD, MYSQLI_DATABASENAME) or trigger_error('Het was onmogelijk om database connectie te maken.');
// Alles in de database stoppen, maak een extra veld in de database genaamd ip:
$SQL = mysqli_query($Conn, "INSERT INTO balk SET id = '', naam = '".mysqli_real_escape_string($Conn, $_POST['naam'])."', bericht = '".mysqli_real_escape_string($Conn, $_POST['bericht'])."', ip = '".mysqli_real_escape_string($Conn, $_SERVER['REMOTE_ADDR'])."'") or trigger_error('Er is iets fout gelopen met het maken van de datbase connectie (input).');
// Sluit de connectie:
mysqli_close($Conn);
// Kijken of de database is geupdatet:
if($SQL) {
echo 'U hebt het volgende bericht gepost: <br>'.smilie($_POST['bericht']).'.'; }
else {
echo 'Probeer het later nog eens opnieuw, want er is iets fout gegaan.'; } }
// Ik weet niet waarom je else zou doen... Maar dat kan je er zelf wel nog bijvoegen natuurlijk.
?>
include("config.php"); // Configuratie bestand
include("functions.php"); // Standaard functies
// Als er op post gedrukt wordt:
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Stuur de gebruiker door naar gepost.php (weet ik niet wrm, maarja):
// Ik denk dat dit hier ook niet hoor, eerst doorsturen en dan pas de query uitvoeren???
// Hoe doe je dat en waarom toon je dan nog dat het bericht gepost is?
header("Location: http://www.smik.tk/gepost.php"); // Dus ik denk dat dit weg moet :p
// De database connectie (je kan ook natuurlijk config.php of functions.php gebruiken:
$Conn = mysqli_connect(MYSQLI_SERVER, MYSQLI_USERNAME, MYSQLI_PASSWORD, MYSQLI_DATABASENAME) or trigger_error('Het was onmogelijk om database connectie te maken.');
// Alles in de database stoppen, maak een extra veld in de database genaamd ip:
$SQL = mysqli_query($Conn, "INSERT INTO balk SET id = '', naam = '".mysqli_real_escape_string($Conn, $_POST['naam'])."', bericht = '".mysqli_real_escape_string($Conn, $_POST['bericht'])."', ip = '".mysqli_real_escape_string($Conn, $_SERVER['REMOTE_ADDR'])."'") or trigger_error('Er is iets fout gelopen met het maken van de datbase connectie (input).');
// Sluit de connectie:
mysqli_close($Conn);
// Kijken of de database is geupdatet:
if($SQL) {
echo 'U hebt het volgende bericht gepost: <br>'.smilie($_POST['bericht']).'.'; }
else {
echo 'Probeer het later nog eens opnieuw, want er is iets fout gegaan.'; } }
// Ik weet niet waarom je else zou doen... Maar dat kan je er zelf wel nog bijvoegen natuurlijk.
?>
Die header zou dan beter kunnen verdwijnen, omdat je op lijn 23 al een bevestiging toont. Desgewenst zou je op die lijn die header kunnen plaatsen.
Erg bedankt voor de hulp.
Ik ga straks aan de slag met dat script om dingen uit te proberen!
Bedankt :)
Ik ga straks aan de slag met dat script om dingen uit te proberen!
Bedankt :)
Lees wel de post van - Aar - eens goed door :p. Want een header versturen voordat de tabel geüpdatet is, is niet goed, want dan wordt de tabel in z'n geheel niet geüpdatet.
Dus er zijn twee mogelijk heden.
1. Laat de header weg
2. Zet op regel 23 de header, dan wordt de gebruiker doorgestuurd naar de gepost.php pagina als de database is geüpdatet (zie post - Aar -)
Dus er zijn twee mogelijk heden.
1. Laat de header weg
2. Zet op regel 23 de header, dan wordt de gebruiker doorgestuurd naar de gepost.php pagina als de database is geüpdatet (zie post - Aar -)
Beste,
ik heb zonet het script uitgeporbeerd, hij verzend een bericht en de naam, alleen krijg ik geen IP adres in mijn database.
Zou er een fout kunnen zijn in mijn database tabel? En hou zou die er moeten uitzien?
ik heb zonet het script uitgeporbeerd, hij verzend een bericht en de naam, alleen krijg ik geen IP adres in mijn database.
Zou er een fout kunnen zijn in mijn database tabel? En hou zou die er moeten uitzien?
Hoe ziet de database er uit?
een gewone, varchar 14
Ik zou er maar varchar 15 van maken. Niet dat het je probleem oplost, maar er zitten drie punten in een IP-adres, en elke octet kan uit 3 tekens bestaan.
Volgens mij kan je net zo makkelijk varchar 39 er van maken i.v.m. IPv6.
Ik zal het eens problemen en kijken of het probleem opgelost is.




