Permalänk
Medlem

PHP MySQL - skapa ny användare

Har gjort en inloggning till en hemsida som jag har. Nu hade jag tänkt att man ska kunna skapa nya användare utan att pilla manuellt i databasen. Så här har jag gjort. Det bli inget error men ändå skapas ingen ny användare. vad är fel? Sista raden är jag fruktansvärt tveksam på.

Här är koden:

Citat:

<form action="" metod="post">
Username: <input type="text" name="UN" /><br />
Password: <input type="password" name="UP" /><br />
Confirm Password: <input type="password" name="UPC" /><br />
<input type="submit" value="Create" />
</form>

<?php

if(isset($_POST["UN"], $_POST["UP"], $_POST["UPC"])) {

if(!$_POST["UN"] | !$_POST["UP"] | !$_POST["UPC"]) {
die("You did not fill a required field.");
}
if($_POST["UP"] == $_POST["UPC"]) {
die("The passwords do not match");
}

$con = mysql_connect("localhost","root");
if (!$con){
die ("Could not connect: " . mysql_error());
}

mysql_select_db("users");
mysql_query("INSERT INTO usersinfo (username, password) VALUES(" . $_POST["UN"] . "," . sha1($_POST["UP"]) . ")");

}

?>

Permalänk

skriv:

echo myqsl_error();

efter din mysql_query() så får du veta om det är fel på din sql sträng.

Permalänk
Medlem
Skrivet av Lullebulle:

skriv:

echo myqsl_error();

efter din mysql_query() så får du veta om det är fel på din sql sträng.

Får inget error eller något. Fälten blir bara blanka igen.

Permalänk
Medlem

Du måste innesluta variablerna i fnuttar eller dubbelfnuttar i SQL-strängen.

(" . $_POST["UN"] . "," . sha1($_POST["UP"]) . ")"

=>

('" . $_POST["UN"] . "','" . sha1($_POST["UP"]) . "')"

edit: och jo, du får ett SQL-fel från det. Skriv så här efter alla MySQL-kommandon: " or die(mysql_error());". Exempel:
mysql_connect(...) or die(mysql_error());
mysql_select_db(...) or die(mysql_error());
mysql_query(...) or die(mysql_error());

Permalänk
Medlem

Jag har nu testat allt det ni sagt. Det funkar fortfarande inte och nej jag får inte några errors även om jag skriver ut die(mysql_error()); Kan den bara hoppa över kod om något blir fel annars?
Nu ser koden ut så här:

<form action="" metod="post"> Username: <input type="text" name="UN" /><br /> Password: <input type="password" name="UP" /><br /> Confirm Password: <input type="password" name="UPC" /><br /> <input type="submit" value="Create" /> </form> <?php if(isset($_POST["UN"], $_POST["UP"], $_POST["UPC"])) { if(!$_POST["UN"] | !$_POST["UP"] | !$_POST["UPC"]) { die("You did not fill a required field."); } if($_POST["UP"] == $_POST["UPC"]) { $con = mysql_connect("localhost","root"); if (!$con){ die ("Could not connect: " . mysql_error()); } mysql_select_db("users") or die (mysql_error()); mysql_query("INSERT INTO usersinfo (username, password) VALUES('" . $_POST["UN"] . "','". sha1($_POST["UP"]) . "')") or die(mysql_error()); echo mysql_error(); echo YES; } else { die("The passwords do not match"); } } ?>

Permalänk

... <input type="submit" name="submit" value="Create" /> ... ... if(isset($_POST['submit'])) { //istället för "if(isset($_POST["UN"], $_POST["UP"], $_POST["UPC"])) {" ...

Visa signatur

Q6600 @ 3.2GHz | 2*4 Corsair XMS2 5-5-5-12 @ 1003 | Club3D HD4850 | Asus P5Q Pro

Permalänk
Medlem

Kan man få se strukturen på din tabell(usersinfo)?

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem

testa denna kod och se om den fungerar. Helt otestad och skriven snabbt.

<form action="" method="post"> Username: <input type="text" name="UN" /><br /> Password: <input type="password" name="UP" /><br /> Confirm Password: <input type="password" name="UPC" /><br /> <input type="submit" name="submit" value="Create" /> </form> <?php if(isset($_POST['submit']) { $username = mysql_real_escape_string(strip_tags($_POST['UN'])); $pass1 = mysql_real_escape_String(strip_tags($_POST['UP'])); $pass2 = mysql_real_escape_string(strip_tags($_POST['UPC'])); if($username == "" || $pass1 == "" || $pass2 == "") { die("You did not fill a required field."); } if($pass1 == $pass2) { $con = mysql_connect("localhost","root"); if (!$con){ die ("Could not connect: " . mysql_error());} mysql_select_db("users") or die (mysql_error()); mysql_query("INSERT INTO usersinfo (username, password) VALUES('$username','sha1($pass1)')") or die(mysql_error()); } else { die("The passwords do not match"); } } ?>

Permalänk
Medlem

Undvik att skicka in $_POST-variablerna direkt i SQL:en.. Det är som gjort för SQL-injections.. Se till att ingen kan utföra något sådant när de registrerar sig på din sida

Visa signatur

WS: Mac Studio M1 Max | 32 GB | 1TB | Mac OS
WS: Intel i5 12600K | 64 GB DDR4 @3600 Mhz | 2x1TB nvme 2x1TB SSD SATA | Windows 11 & Manjaro Linux
Bärbar: Macbook Pro 14" | M1 Pro | 16GB RAM | 512GB SSD | Mac OS
Servrar: Intel i7 10700K | 64 GB DDR4 @3600Mhz | 3 TB SSD + 22TB HDD | Unraid |
4x Raspberry pi 4b 8Gb | Dietpi |