webForumDet fria alternativet

Lägga till i databasen

Databaser & SQL

5 svar · 595 visningar · startad av emton

Medlem sedan juni 200589 inlägg
Frågan#1

Nu har jag kört fast (igen). En ny person ska kunna lägga till sig i databasen men jag får inte till det.
På en sida har jag formulär m.m

<?php
	$errors = false;

	if (isset($_POST['signup_submit'])) {
		if (!empty($_POST['username']) and !empty($_POST['password']) and $_POST['password'] == $_POST['password_2']) {
			$user = Users::getByID(Users::insert($_POST));

			Users::login($user['username'], $user['password']);

			header('Location: admin-start.php');
		}
		else {
			$errors = true;
		}
	}
?>

<div id="signup">
		<?php if ($errors) { ?>
		<p><strong>Något blev fel. Se till att alla fält är ifyllda.</strong></p>
	<?php } ?>

	
	
	<form method="post" action="">

		<p>
			<label>
				Användarnamn<br/>
				<input type="text" name="username"/>
			</label>
		</p>

		<p>
			<label>
				Lösenord<br/>
				<input type="password" name="password"/>
			</label>
		</p>

		<p>
			<label>
				Repetera lösenord<br/>
				<input type="password" name="password_2"/>
			</label>
		</p>

		<p>
			<input type="hidden" name="signup_submit"/>
			<input type="submit" value="Bli medlem"/>
		</p>

	</form>

</div>

På en annan sida har jag klassen users

class Users {
public static function insert ($row) {
						$sql = "INSERT INTO users(username, password) VALUES(".$username.", ".$password.");";
     $sql_result = mysql_query($sql) or print(mysql_error());
    
     
	   $row = mysql_insert_id();
                
					return $row;
	}
}

Just nu får jag upp min error text "Något blev fel. Se till ....". Vad är det som är fel?

Medlem sedan juni 200589 inlägg
#2

Löst

Medlem sedan juni 200032 967 inlägg
#3

... och då skriver man i tråden hur man löste problemet, och sedan markerar man det inlägget som lösning.

Mvh

Medlem sedan juni 200589 inlägg
#4

@nders skrev:

... och då skriver man i tråden hur man löste problemet, och sedan markerar man det inlägget som lösning.

Mvh

Självklart, hade lite bråttom där.

public static function insert ($row) {
			$sql = "INSERT INTO users(username, password) VALUES ('$row[username]', '$row[password]');";   
			$sql_result = mysql_query($sql) or print(mysql_error());       
			$id = mysql_insert_id();
			return $id;
		}
Medlem sedan aug. 20039 340 inlägg
#5

emton, du bör nog sanera din kod lite grann. Du har ett par uppenbara SQL-sårbarheter. Kör all data som ska in i databasen genom mysql_real_escape_string. Detta gäller även data som du precis har plockat ut från databasen.

Du kan läsa om SQL-injektioner på Wikipedia.

Medlem sedan juni 200589 inlägg
#6

nitro2k01 skrev:

emton, du bör nog sanera din kod lite grann. Du har ett par uppenbara SQL-sårbarheter. Kör all data som ska in i databasen genom mysql_real_escape_string. Detta gäller även data som du precis har plockat ut från databasen.

Du kan läsa om SQL-injektioner på Wikipedia.

Tack för påpekan. Jag ska fixa med det sen, just nu var det lite bråttom att få det att funka så jag ska justera lite småsaker sen, bla det.

255 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)