webForumDet fria alternativet

Lägga till i databasen

5 svar · 595 visningar · startad av emton

emtonMedlem sedan juni 200589 inlägg
#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?

emtonMedlem sedan juni 200589 inlägg
#2

Löst

@ndersMedlem sedan juni 200032 969 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

emtonMedlem 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;
		}
nitro2k01Medlem sedan aug. 20039 342 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.

emtonMedlem 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.

131 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)