Permalänk
Medlem

Formulär.

Tjenare.

Håller på lite med en hemsida till vårat lan.
Har då fixat ett enkelt formulär som är kopplat mot en sql server.

Men efter som jag inte är direkt super haj på php så kan man ju bara fylla i typ en rad eller ingen för den delen i formuläret och skicka de så blir de ju bara en tom rad i databasen.

Hur gör man för att detta inte skall gå?

http://data.fuskbugg.se/skalman01/ASEDALAN.jpg

Citat:

Register.php

<form action="regga.php" method="post">
<p><span class="style1">
<input type="text" name="firstname" />
<strong>Förnamn</strong><br />
<input type="text" name="nick" />
<strong>Nick </strong><span class="style3">(Använda samma under lanet så vi vet vilka det är som är på nätet.)</span><br />
<input type="text" name="lastname" />
<strong> Efternamn </strong><br />
<input type="text" name="age" />
<strong>Ålder</strong><br />
<input type="text" name="email" />
<strong>Email</strong> <span class="style3">(Så vi kan skicka till er om det är nått ni borde veta.)</span><br />
<input type="text" name="comment" />
<strong>Kommentar</strong> <span class="style3">(Om det är nått speciellt, typ att du bara kan vara 1 dag eller så.) </span><br />
<input type="text" name="phone" />
<strong>Telefon</strong> <span class="style3">(Måste vi ha om I fall vi måste ställa in lanet.)</span></span><br />
<input type="submit" name="submit"/>

Citat:

regga.php

<?php
include ("include.php");

if (isset($_POST['submit'])) {

if(empty($_POST['firstname']))
$firstname = "not set";
if(empty($_POST['lastname']))
$lastname = "not set";
if(empty($_POST['age']))
$age = "not set";
if(empty($_POST['nick']))
$nick = "not set";
if(empty($_POST['email']))
$email = "not set";
if(empty($_POST['comment']))
$comment = "not set";
if(empty($_POST['phone']))
$phone = "not set";

$firstname = $_POST['firstname'];
$nick = $_POST['nick'];
$lastname = $_POST['lastname'];
$age = $_POST['age'];
$email = $_POST['email'];
$comment = $_POST['comment'];
$phone = $_POST['phone'];
}

$add = "INSERT INTO pilots (firstname, lastname, age, nick, email, comment, phone) VALUES ('$firstname', '$lastname', '$age', '$nick', '$email', '$comment', '$phone')";
mysql_query($add) or die("Nått gick fel försök igen!");
?>
<html>
<title>Aseda lan</title>
Tyvär är de redan 70 anmälda men du får försöka senare så kanske de är nån som sakt att dom inte skall vara med. <h3> <a href="index.html">Hem</a></h3>
</html>

Visa signatur

skriva kan jag läsa kan jag, men bra de får du bedöma själv. står bara upp till en sak och de är att jag är LAT.
Gigabyte P35 DS4 || Intel E6750 || Corsair XMS2 Xtreme 4096MB || Xfx 9800Gt || 4250Gb Hdd 2x2Tb 1x250Gb || Corsair VX550w

Permalänk
Medlem

för det första så är ditt formulär helt öppet för så kallade sql-injections. Dvs att hacka din sql server o komma åt / ta bort data.

Hoppas inte sidan är öppen för hela internet!

Du kan ju läsa sidan nedan o göra om så dina sql satser använder mysql_real_escape_string() på datan som skall in i sql satsen.

http://www.digifuzz.net/archives/2007/07/preventing-sql-injec...

Permalänk
Medlem

Testa och se om detta fungerar. Dock HELT otestad.

Sen som inlägget ovanför så läs på om SQL-injections och vad som kan hända.

<?php include ("include.php"); if(isset($_POST['submit'])){ $firstname = mysql_real_escape_string(strip_tags(stripslashes($_POST['firstname']))); $nick = mysql_real_escape_string(strip_tags(stripslashes($_POST['nick']))); $lastname = mysql_real_escape_string(strip_tags(stripslashes($_POST['lastname']))); $age = mysql_real_escape_string(strip_tags(stripslashes($_POST['age']))); $email = mysql_real_escape_string(strip_tags(stripslashes($_POST['email']))); $comment = mysql_real_escape_string(strip_tags(stripslashes($_POST['comment']))); $phone = mysql_real_escape_string(strip_tags(stripslashes($_POST['phone']))); if (empty($firstname) || empty($nick) || empty($lastname) || empty($age) || empty($email) || empty($comment) || empty($phone)){ echo "Alla fält måste fyllas i"; } else{ mysql_query("INSERT INTO pilots (firstname,lastname,age,nick,email,comment,phone) VALUES ('$firstname','$lastname','$age','$nick','$email','$comment','$phone'") or die(mysql_error()); } ?> <html> <title>Aseda lan</title> Tyvär är de redan 70 anmälda men du får försöka senare så kanske de är nån som sakt att dom inte skall vara med. <h3> <a href="index.html">Hem</a></h3> </html>

Permalänk
Medlem

Läs ”SQL Injections” för mer info om SQL-injections och ”CSS semantics” för mer om dina dåliga klassnamn i formuläret.

Permalänk
Medlem

Tack hamre för försöket men de fungerade inge vidare. De skriver inte in de i databasen.

Då får dom komma sql injections på min sida för de gör mig ingenting backar upp titt som tätt och skulle inte vara hela världen om man får köra om hela skiten.

Visa signatur

skriva kan jag läsa kan jag, men bra de får du bedöma själv. står bara upp till en sak och de är att jag är LAT.
Gigabyte P35 DS4 || Intel E6750 || Corsair XMS2 Xtreme 4096MB || Xfx 9800Gt || 4250Gb Hdd 2x2Tb 1x250Gb || Corsair VX550w

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av krakis
Då får dom komma sql injections på min sida för de gör mig ingenting backar upp titt som tätt och skulle inte vara hela världen om man får köra om hela skiten.

Eller så lägger du den halvtimmen det tar att läsa på om SQL-injections och fixa dina fel, så har du lärt dig något på köpet också.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av You
Eller så lägger du den halvtimmen det tar att läsa på om SQL-injections och fixa dina fel, så har du lärt dig något på köpet också.

Omtänksamt av dig att du bryr dig men som sagt gör ingenting om de skulle gå åt skogen med databasen.

Visa signatur

skriva kan jag läsa kan jag, men bra de får du bedöma själv. står bara upp till en sak och de är att jag är LAT.
Gigabyte P35 DS4 || Intel E6750 || Corsair XMS2 Xtreme 4096MB || Xfx 9800Gt || 4250Gb Hdd 2x2Tb 1x250Gb || Corsair VX550w

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av krakis
Tack hamre för försöket men de fungerade inge vidare. De skriver inte in de i databasen.

Då får dom komma sql injections på min sida för de gör mig ingenting backar upp titt som tätt och skulle inte vara hela världen om man får köra om hela skiten.

Okej. Det blir inga felmeddelanden eller nåt??

Testa dom raderna kod du hade för att lägga till i databasen och kolla om det fungerar.

Permalänk
Medlem

Hamre

Testade ju med mitt först och då fungerade de. sen när jag testade ditt så fungerade kontrollen så de såg att man inte hade skrvit i nått men sen när man fyllde i allt så dök de inte upp nått i databasen.

Visa signatur

skriva kan jag läsa kan jag, men bra de får du bedöma själv. står bara upp till en sak och de är att jag är LAT.
Gigabyte P35 DS4 || Intel E6750 || Corsair XMS2 Xtreme 4096MB || Xfx 9800Gt || 4250Gb Hdd 2x2Tb 1x250Gb || Corsair VX550w

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av krakis
Hamre

Testade ju med mitt först och då fungerade de. sen när jag testade ditt så fungerade kontrollen så de såg att man inte hade skrvit i nått men sen när man fyllde i allt så dök de inte upp nått i databasen.

Okej. Om du i else satsen byter ut allt mot detta då:

$sql = mysql_query("INSERT INTO pilots (firstname, lastname, age, nick, email, comment, phone) VALUES ('$firstname', '$lastname', '$age', '$nick', '$email', '$comment', '$phone'") or die(mysql_error()); print_r($sql);

Om det inte kommer upp i databasen då så berätta gärna vad som skrevs ut med hjälp av print_r.
Om det fungerar så kan du ta bort print_r raden.

Permalänk
Medlem

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

är allt som kommer upp då.

Ändrade dock om lite så nu fungerar de typ som jag vill. förutom att åäö strular och blir konstiga tecken.

<?php include ("include.php"); if (isset($_POST['submit'])) { if(empty($_POST['firstname'])) $firstname = "not set"; if(empty($_POST['lastname'])) $lastname = "not set"; if(empty($_POST['age'])) $age = "not set"; if(empty($_POST['nick'])) $nick = "not set"; if(empty($_POST['email'])) $email = "not set"; if(empty($_POST['comment'])) $comment = "not set"; if(empty($_POST['phone'])) $phone = "not set"; $firstname = $_POST['firstname']; $nick = $_POST['nick']; $lastname = $_POST['lastname']; $age = $_POST['age']; $email = $_POST['email']; $comment = $_POST['comment']; $phone = $_POST['phone']; if (empty($firstname) || empty($nick) || empty($lastname) || empty($age) || empty($email) || empty($comment) || empty($phone)) echo "Alla fält måste fyllas i"; else $add = "INSERT INTO pilots (firstname, lastname, age, nick, email, comment, phone) VALUES ('$firstname', '$lastname', '$age', '$nick', '$email', '$comment', '$phone')"; mysql_query($add) or die("Nått gick fel försök igen!"); } ?> <html> <title>Aseda lan</title> Tack för att du registrerade dig. <h3> <a href="index.html">Hem</a></h3> </html>

Visa signatur

skriva kan jag läsa kan jag, men bra de får du bedöma själv. står bara upp till en sak och de är att jag är LAT.
Gigabyte P35 DS4 || Intel E6750 || Corsair XMS2 Xtreme 4096MB || Xfx 9800Gt || 4250Gb Hdd 2x2Tb 1x250Gb || Corsair VX550w