Som jeg skriver i det andet spm. er fejlen i denne linie så vidt jeg er orinteret: <input type="hidden" name="ip" value="<?php $ip=$_SERVER['REMOTE_ADDR']; ?>">
Du siger at dine data bliver postet andre steder i databasen, end de bør. Så ja det gør det måske! (Medmindre jeg totalt har misforstået, selvfølgelig.. det skal jeg da ikke afvise)
Men din kode er helt gyldig - du kunne også skrive: <?=$ip = $_SERVER["REMOTE_ADDR"]; ?>
Sådan kan den se ud (beklager forrige fejl)! Når du kalder $ip efter at have sendt formen får du ip'en. Du kan selv teste med at smide den ind i et php dokument, uploade og vise source.
Men det er nu tosset at putte en IP ind i et felt på een side, og aflæse feltet på en anden side, når den anden side lige så godt kunne aflæse IP-en. Faktisk vil enhver hacker kunne indsætte en vilkårlig IP-adresse, og så er det jo ikke til nogen nytte ;)
Men er problemet ikke med indsættelsen i databasen - eller hvad?
neocron --> Lige prøvet ovenstående, og gav samme resultat. Stor forvirring i min MySQL Database... Ipén skal den ligge i den kolonne som hedder "ip". Lige pt. ligger den ipén i en anden kolonne.
erikjacobsen har egentlig ret i det han siger. Jeg er ikke nogen større ekspert i sikkerhed som sådan, men jeg bruger heller aldrig selv $_SERVER["REMOTE_ADDR"] hvor andre kan se den. Den ryger bare ind som et led i mysql-query'en uden at blive printet til brugeren.
Hmm så ved jeg godt nok ikke lige umiddelbart. Placeres de andre data NOGENLUNDE, som de skal, hvis vi lige tæller ip-rækken fra?
Nej, ikke rigtigt... Men min forbindelse til databasen er lukket der, da den er færdig, i min kode vil jeg ikke kunne gøre det da den kode skal connecte databasen
<?php include('inc.config.php'); $query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%Y %T') AS date FROM news WHERE id=".$_GET['id'].""); $row = mysql_fetch_assoc($query);
$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%Y %T') AS date FROM comments WHERE parent=".$_GET['id']." ORDER BY id ASC"); if (mysql_num_rows($query) > 0) { echo '<a name="Kommentarer"></a><h2>Kommentarer</h2>'; while ($row = mysql_fetch_assoc($query)) { echo empty($row['email']) ? htmlspecialchars($row['name']) : '<a href="mailto:'.$row['email'].'">'.htmlspecialchars($row['name']).'</a>'; echo ' ('.$row['date'].')<br><br>'; echo nl2br(htmlspecialchars($row['text'])); echo '<div class="hr"></div>'; } } ?>
<a name="kommenter"></a><h2>Kommenter nyhed</h2>
Her kan du vælge at kommentere, ovenstående nyhed - sæt dine egne ord på og deltag i debatten.
<?php include('inc.config.php'); $query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%Y %T') AS date FROM news WHERE id=".$_GET['id'].""); $row = mysql_fetch_assoc($query);
$query = mysql_query("SELECT *,DATE_FORMAT(date,'%e/%c-%Y %T') AS date FROM comments WHERE parent=".$_GET['id']." ORDER BY id ASC"); if (mysql_num_rows($query) > 0) { echo '<a name="Kommentarer"></a><h2>Kommentarer</h2>'; while ($row = mysql_fetch_assoc($query)) { echo empty($row['email']) ? htmlspecialchars($row['name']) : '<a href="mailto:'.$row['email'].'">'.htmlspecialchars($row['name']).'</a>'; echo ' ('.$row['date'].')<br><br>'; echo nl2br(htmlspecialchars($row['text'])); echo '<div class="hr"></div>'; } } ?>
<a name="kommenter"></a><h2>Kommenter nyhed</h2>
Her kan du vælge at kommentere, ovenstående nyhed - sæt dine egne ord på og deltag i debatten.
Nederst, skal den nu også hente brugerens IP og indsætte den i feltet ip. Med den gamle kode kom tingene ind det rigtige sted, men ikke når jeg får sat "ip" på ?
04/01-2005 23:41:12 I snakker om, hvor skal den indsættes i den nye kode så ?
erikjacobsen --> Du må meget undskylde mig, men er væk omkring det. Hvis der er en fejl der, hvorfor har det så virket før, uden <input type="hidden" name="ip" value="<?php $ip=$_SERVER['REMOTE_ADDR']; ?>">
Det du har nu, 00:35:50, uden navne på felter, er såmænd godt nok, når de nu står i den rigtige rækkefølge. Når det virker kan du jo sætte navne på felter ind, så det bliver mere læseligt.
Weee --> Tusind tak, kan se i min MySQL Admin at alt køre som det skal :D Smid et svar og du får smidt nogen point tilbage i nakken som tak for hjælpen og din tolmodighed med os php-begyndere :-P
Men det med IP-en som jeg skrev. Du skal nok ganske simpelt ændre det til:
mysql_query("INSERT INTO comments VALUES ('','".$_SERVER['REMOTE_ADDR']."','".$_POST['name']."','".$_POST['email']."',now(),'".$_POST['text']."','".$_POST['parent']."')") or die(mysql_error());
og fjerne dit hidden-felt i formen. Så kan du ikke hackes på lige den måde i hvert fald ;)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.