Dryper Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 Heisann, jeg holder på å lage en sider der folk kan legge igjen info Navn Etternavn osv men jeg har store problemer med ID'en. Hver gang jeg klikker på "Refresh" knappen i firefox blir ID en ett tall høyere uansett om alle "Text Fields" er tomme. jeg klarer ikke å finne ut av det. please help me! Her er koden: <html> <body> <center> <form action="index.php" method="post" bgcolor="red"> <center>Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> Email: <input type="text" name="email" /> Country: <input type="text" name="country" /> IP: <input type="text" name="ip" value=<?php echo $_SERVER['REMOTE_ADDR'];?> /><br /> <!--This shows IP in the box! START OF PHP--!> <input type="submit" /></center> </form> <? $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("$db", $con);$sql="INSERT INTO members (firstname, lastname, age, email, country, ip) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[country]','$_POST[ip]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "";mysql_close($con) ?> <html> <body> <? echo "Your IP is:"; echo $_SERVER['REMOTE_ADDR']; //Shows clients IP ?> </html> </body> <? $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db", $con); $result = mysql_query("SELECT * FROM members"); echo "<table border='1'> <tr> <th>ID</th> <th>Name</th> <th>Lastname</th> <th>Age</th> <th>E-Mail</th> <th>Country</th> <th>IP</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['firstname'] . "</td>"; echo "<td>" . $row['lastname'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "<td>" . $row['country'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "</tr>"; } echo "</table>";mysql_close($con); ?> </center> </body> </html> Lenke til kommentar
EirikO Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 Du må sjekke om feltene er utfylt før du kjører spørring og legger data inn i databasen. Lenke til kommentar
Dryper Skrevet 16. desember 2007 Forfatter Del Skrevet 16. desember 2007 Du må sjekke om feltene er utfylt før du kjører spørring og legger data inn i databasen. er noob jeg litt bedre forklaring ville vært greit Lenke til kommentar
eifoerde Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 (endret) <html> <body> <center> <form action="index.php" method="post" bgcolor="red"> <center>Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> Email: <input type="text" name="email" /> Country: <input type="text" name="country" /> IP: <input type="text" name="ip" value=<?php echo $_SERVER['REMOTE_ADDR'];?> /><br /> <!--This shows IP in the box! START OF PHP--!> <input type="submit" /></center> </form> <? if ($_POST[firstname] != "") { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("$db", $con);$sql="INSERT INTO members (firstname, lastname, age, email, country, ip) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[country]','$_POST[ip]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } } echo "";mysql_close($con) ?> <html> <body> <? echo "Your IP is:"; echo $_SERVER['REMOTE_ADDR']; //Shows clients IP ?> </html> </body> <? $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db", $con); $result = mysql_query("SELECT * FROM members"); echo "<table border='1'> <tr> <th>ID</th> <th>Name</th> <th>Lastname</th> <th>Age</th> <th>E-Mail</th> <th>Country</th> <th>IP</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['firstname'] . "</td>"; echo "<td>" . $row['lastname'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "<td>" . $row['country'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "</tr>"; } echo "</table>";mysql_close($con); ?> </center> </body> </html> Prøv den, tror det skal gjøre det men er ikke helt sikker, er en stund siden eg har vært borti det Endret 16. desember 2007 av eifoerde Lenke til kommentar
Dryper Skrevet 16. desember 2007 Forfatter Del Skrevet 16. desember 2007 <html> <body> <center> <form action="index.php" method="post" bgcolor="red"> <center>Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> Email: <input type="text" name="email" /> Country: <input type="text" name="country" /> IP: <input type="text" name="ip" value=<?php echo $_SERVER['REMOTE_ADDR'];?> /><br /> <!--This shows IP in the box! START OF PHP--!> <input type="submit" /></center> </form> <? if ($_POST[firstname] != "") { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("$db", $con);$sql="INSERT INTO members (firstname, lastname, age, email, country, ip) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[country]','$_POST[ip]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } } echo "";mysql_close($con) ?> <html> <body> <? echo "Your IP is:"; echo $_SERVER['REMOTE_ADDR']; //Shows clients IP ?> </html> </body> <? $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db", $con); $result = mysql_query("SELECT * FROM members"); echo "<table border='1'> <tr> <th>ID</th> <th>Name</th> <th>Lastname</th> <th>Age</th> <th>E-Mail</th> <th>Country</th> <th>IP</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['firstname'] . "</td>"; echo "<td>" . $row['lastname'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "<td>" . $row['country'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "</tr>"; } echo "</table>";mysql_close($con); ?> </center> </body> </html> Prøv den, tror det skal gjøre det men er ikke helt sikker, er en stund siden eg har vært borti det Fikk opp: Parse error: syntax error, unexpected '[' in C:\server\www\redcoke\table.php on line 16 Lenke til kommentar
eifoerde Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 endre: if ($_POST[firstname] != "") { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting til: if ($_POST) { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting det har ihvertfall funket for meg før, viss ikkje må eg begynne å tenke Lenke til kommentar
Dryper Skrevet 16. desember 2007 Forfatter Del Skrevet 16. desember 2007 endre: if ($_POST[firstname] != "") { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting til: if ($_POST) { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting det har ihvertfall funket for meg før, viss ikkje må eg begynne å tenke Ja begynner å nerme meg no nå når jeg tar vekk { får jeg ikke error men dermimot "Could not connect", det kommer jo av at jeg closer alt fordi den er Blank som default :S Lenke til kommentar
Ernie Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 (endret) endre: if ($_POST[firstname] != "") { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting til: if ($_POST) { //sjekker om fornavnet er skrevet inn, viss det er det, legges det til i databasen, viss ikke skjer ingenting det har ihvertfall funket for meg før, viss ikkje må eg begynne å tenke Det der er en mildt sagt stygg måte å gjøre det på. Først og fremst skal en if helst ha et uttrykk som ender opp en boolean. $_POST er aldri en boolean, og når du heller ikke sjekker det opp mot noe blir det heller aldri noen boolean ut av det. Ja, man har autocasting som tilsynelatende "løser" problemet, men hvis du skal debug scriptet. Hvordan skal du vite hva $_POST bør være for at «compund statment»-et skal kjøres? Er det meningen at $_POST skal ha en spesiell verdi? Hvilken type er det egentlig snakk om? Dette går ikke videre åpenbart frem av koden. I dette tilfellet veit "alle" at det er snakk om POST fra HTTP-protokollen og at det er en array med masse verdier hvis den i det heltatt er satt. Her er problemet: "if ($_POST)" sjekker ikke om $_POST er satt, den konverterer $_POST etter beste evne til enn boolean, dvs. true eller false. Det du egentlig vil sjekke er om $_POST faktisk eksisterer siden det vil tilsi at bruker har sendt inn en form. Vi har faktisk en egen funksjon for akkurat det, og den heter isset(...). Dryper: Problemet ditt er at du alltid kjører en insert mot databasen. Du må sjekke om bruker faktisk har sendt inn noe før du gjøre det. Hvis du gir submit-knappen et navn kan du enkelt sjekke det ved f.eks if (isset($_POST['navn på submit knappen'])) { //Dette vil jeg utføre når bruker trykker på submit } Videre har du et sikkerhetsproblem i og med at du dytter data rett inn i databasen. Dette kan utnyttes til å kjøre SQL-injection. Valider dataene eller kjør dataene igjennom mysql_real_escape_string(...) før du setter de inn. Et siste problem er at du bruker <? ?>. Dette er utdatert og vil forsvinne i PHP6, hvis ikke før. Bruk heller <?php ?> rundt php-scriptene. Endret 16. desember 2007 av Ernie Lenke til kommentar
eifoerde Skrevet 16. desember 2007 Del Skrevet 16. desember 2007 Ja Ernie, er enig med at det ikkje er noen pen måte å gjøre det på, men som eg sa, det er en stund siden eg har rotet med php noe særlig, og når eg fant de nyeste scriptene, så har eg brukt akkurat den måten du nevnte Men takk for infoen om hvorfor if($_POST) ikke bør brukes var litt nytt der Lenke til kommentar
Dryper Skrevet 17. desember 2007 Forfatter Del Skrevet 17. desember 2007 Ja Ernie, er enig med at det ikkje er noen pen måte å gjøre det på, men som eg sa, det er en stund siden eg har rotet med php noe særlig, og når eg fant de nyeste scriptene, så har eg brukt akkurat den måten du nevnte Men takk for infoen om hvorfor if($_POST) ikke bør brukes var litt nytt der Takk for gode svar Ernie og , eifoerde Lenke til kommentar
Dryper Skrevet 17. desember 2007 Forfatter Del Skrevet 17. desember 2007 Når jeg prøvde å bruke de greiene fikk jeg errors :S kunne du puttet dem in for meg, jeg er for newb sorry. <!------------------------!> <!-------Table.php--------!> <!----Made By ********----!> <!-----Copyright 2007-----!> <!------------------------!> <html> <body> <center> <form action="index.php" method="post" bgcolor="red"> <center>Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> Email: <input type="text" name="email" /> Country: <input type="text" name="country" /> IP: <input type="text" name="ip" value=<?php echo $_SERVER['REMOTE_ADDR'];?> /><br /> <!--This shows IP in the box! START OF PHP--!> <input type="submit" name="sumbit" value="Sumbit Now!" /></center> </form> </center> </body> </html> <html> <center> <body> <?php $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("$db", $con);$sql="INSERT INTO members (firstname, lastname, age, email, country, ip) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[country]','$_POST[ip]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "";mysql_close($con) ?> </body> </center> </html> <html> <center> <body> <?php echo "Your IP is:"; echo $_SERVER['REMOTE_ADDR']; //Shows clients IP ?> </body> </center> </html> <html> <center> <body> <?php $newline = "<br />"; $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db", $con); $result = mysql_query("SELECT * FROM members"); echo "<table border='1'> <tr> <th>ID</th> <th>Name</th> <th>Lastname</th> <th>Age</th> <th>E-Mail</th> <th>Country</th> <th>IP</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['firstname'] . "</td>"; echo "<td>" . $row['lastname'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "<td>" . $row['country'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "</tr>"; } echo "</table>";mysql_close($con); echo "World Wide Web Information Storage$newline"; echo "Version: 0.1 Alpha$newline"; echo "Copyright 2007-2009"; ?> </body> </center> </html> Har holdt på med det nu i en dag, men får bare errors Lenke til kommentar
itsmebth Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 Er det for mye å be om at du sier hva feilene er? Lenke til kommentar
Dryper Skrevet 17. desember 2007 Forfatter Del Skrevet 17. desember 2007 Er det for mye å be om at du sier hva feilene er? neida ----->unexpected '}' in C:\server\www\redcoke\table.php on line 40 <!------------------------!> <!-------Table.php--------!> <!----Made By ********----!> <!-----Copyright 2007-----!> <!------------------------!> <html> <body> <center> <form action="index.php" method="post" bgcolor="red"> <center>Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> Email: <input type="text" name="email" /> Country: <input type="text" name="country" /> IP: <input type="text" name="ip" value=<?php echo $_SERVER['REMOTE_ADDR'];?> /><br /> <!--This shows IP in the box! START OF PHP--!> <input type="submit" name="sumbit" value="Sumbit Now!" /></center> </form> </center> </body> </html> <html> <center> <body> <?php if (isset($_POST['navn på submit knappen'])) { $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); }mysql_select_db("$db", $con);$sql="INSERT INTO members (firstname, lastname, age, email, country, ip) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]','$_POST[email]','$_POST[country]','$_POST[ip]')";if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "";mysql_close($con) } ?> </body> </center> </html> <html> <center> <body> <?php echo "Your IP is:"; echo $_SERVER['REMOTE_ADDR']; //Shows clients IP ?> </body> </center> </html> <html> <center> <body> <?php $newline = "<br />"; $con = mysql_connect("$host","$username","$password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db", $con); $result = mysql_query("SELECT * FROM members"); echo "<table border='1'> <tr> <th>ID</th> <th>Name</th> <th>Lastname</th> <th>Age</th> <th>E-Mail</th> <th>Country</th> <th>IP</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['id'] . "</td>"; echo "<td>" . $row['firstname'] . "</td>"; echo "<td>" . $row['lastname'] . "</td>"; echo "<td>" . $row['age'] . "</td>"; echo "<td>" . $row['email'] . "</td>"; echo "<td>" . $row['country'] . "</td>"; echo "<td>" . $row['ip'] . "</td>"; echo "</tr>"; } echo "</table>";mysql_close($con); echo "World Wide Web Information Storage$newline"; echo "Version: 0.1 Alpha$newline"; echo "Copyright 2007-2009"; ?> </body> </center> </html> Lenke til kommentar
Gjest Slettet+142 Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 (endret) på linje 39; gjør "mysql_close($con)" om til "mysql_close($con);" Men vær snill og marker den linjen som er feil på neste gang også, da slipper vi å telle selv Endret 17. desember 2007 av Slettet+142 Lenke til kommentar
Dryper Skrevet 17. desember 2007 Forfatter Del Skrevet 17. desember 2007 på linje 39; gjør "mysql_close($con)" om til "mysql_close($con);" Men vær snill og marker den linjen som er feil på neste gang også, da slipper vi å telle selv srry på linje 39; gjør "mysql_close($con)" om til "mysql_close($con);" Men vær snill og marker den linjen som er feil på neste gang også, da slipper vi å telle selv srry Fungerer! yay takker så mycke Lenke til kommentar
grimjoey Skrevet 17. desember 2007 Del Skrevet 17. desember 2007 function checkVar($var, $type = 0) { if ($type === 0) $type =& $_POST; else $type =& $_GET; if (isset($type[$var]) && !empty($type[$var])) { return TRUE; } return FALSE; } har du input fra post (f.eks: <input type='submit' name='submit_login' value='Login' />) kan du sjekke om det eksisterer og ikke er tomt med checkVar('submit_login'); for eksempel. samme kan gjøres med GET variabler ved å bruke: checkVar('navn_på_variabel', 1); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå