Hjälp med php och mysql (webbserverprogrammering 1)

Permalänk
Medlem

Hjälp med php och mysql (webbserverprogrammering 1)

Problemet lite längre ner i kommentarerna.

Permalänk
Medlem

@Addeez: Ta en extra titt på vilka fält som du kontrollerar är tomma

Visa signatur

Skoj: Ryzen 9 5900x, RTX 3080, 32 GB RAM @3200MHz CL16
Jobb: Alienware M15 R6, RTX 3080, 32 GB RAM
Privat: Macbook Pro 13" late 2016

Permalänk
Medlem
Skrivet av Addeez:

Har då fått en uppgift att göra ett login/registrering system men har kört fast lite. När man registrerar sig och inte skriver i tex lösenord/email eller använder namn så kommer det upp en ruta där det står "Email is required" "Password is required" "Username is required" Men har man då skrivit in tex sin email samt sitt användarnamn så ska inte email/username is required poppa upp men det gör det. Här är login om ni vill se problemet.

Edit:
Kan det vara så att det inte är koden som är fel utan att jag råkat göra något galet i datorbasen som gör att den inte känner av när man skrivet något i rutorna?

<?php $username = ""; $email = ""; $errors = array(); $db = mysqli_connect('localhost', 'root', '', 'registration'); if (isset($_POST['register'])) { $username = mysql_real_escape_string($_POST['username']); $email = mysql_real_escape_string($_POST['email']); $password_1 = mysql_real_escape_string($_POST['password_1']); $password_2 = mysql_real_escape_string($_POST['password_2']); if (empty($username)) { array_push($errors, "Username is required"); } if (empty($username)) { array_push($errors, "Email is required"); } if (empty($username)) { array_push($errors, "Password is required"); } if ($password_1 !=$password_2) { array_push($errors, "The passwords do not match"); } if (count($errors) == 0) { $password = md5($password_1); $sql = "INSERT INTO users(username, email, password) VALUES ('$username', '$email', '$password')"; mysql_query($db, $sql); } } ?>

Rekommenderar mysqli också och kolla prepared statements

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40

Permalänk
Medlem

@mmolder: tack det där var ju lite dåligt att missa!

Permalänk
Medlem

Laddade ner xampp och började om offline istället för att hålla på online och får nu error meddelandet.

Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\projekt\server.php:11 Stack trace: #0 C:\xampp\htdocs\projekt\register.php(1): include() #1 {main} thrown in C:\xampp\htdocs\projekt\server.php on line 11

server.php

<?php $username = ""; $email = ""; $errors = array(); // connect to database $db =mysqli_connect('localhost', 'root', '', 'registration'); // if the registration button is clicked if (isset($_POST['register'])) { $username = mysql_real_escape_string($_POST['username']); $email = mysql_real_escape_string($_POST['email']); $password_1 = mysql_real_escape_string($_POST['password_1']); $password_2 = mysql_real_escape_string($_POST['password_2']); // ensure that form is filled correctly if(empty($username)) { array_push($errors, "Username is required"); // add error if empty } if(empty($email)) { array_push($errors, "Email is required"); // add error if empty } if(empty($password_1)) { array_push($errors, "Password is required"); // add error if empty } if ($password_1 != $password_2) { array_push($errors, "The passwords do not match"); } // if there are no errors, save user to database if (count($errors) == 0) { $password = md5($password_1); // encrypts password $sql = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', ' $password')"; mysqli_query($db, $sql); } } ?>

samt
register.php

<?php include('server.php'); ?> <!DOCTYPE html> <html> <head> <title>Registration</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="header"> <h2>Register</h2> </div> <form method="post" action="register.php"> <!-- display validation errors here --> <?php include ('errors.php'); ?> <div class="input-group"> <label>Username</label> <input type="text" name="username"> </div> <div class="input-group"> <label>Email</label> <input type="text" name="email"> </div> <div class="input-group"> <label>Password</label> <input type="password" name="password_1"> </div> <div class="input-group"> <label>Confirm password</label> <input type="password" name="password_2"> </div> <div class="input-group"> <button type="submit" name="register" class="btn">Register</button> </div> <p> Already a member? <a href="login.php">Sign in</a> </p> </form> </body> </html>

Permalänk
Medlem
Skrivet av Addeez:

Laddade ner xampp och började om offline istället för att hålla på online och får nu error meddelandet.
Fatal error: Uncaught Error: Call to undefined function mysql_real_escape_string() in C:\xampp\htdocs\projekt\server.php:11 Stack trace: #0 C:\xampp\htdocs\projekt\register.php(1): include() #1 {main} thrown in C:\xampp\htdocs\projekt\server.php on line 11

Du använder APIet MySQLI och inte MySQL. Så det är https://www.php.net/manual/en/mysqli.real-escape-string.php du ska använda.

Permalänk
Medlem
Skrivet av iXam:

Du använder APIet MySQLI och inte MySQL. Så det är https://www.php.net/manual/en/mysqli.real-escape-string.php du ska använda.

Okej tackar! Jag följer en youtube tutorial och gör det som han gör. Måste medge att jag är väldigt vilsen men det är väl lätt så i början. I xampp står det att jag kör MySQL. Var ser jag att det är MySQLI som används?? (ledsen för dumma frågor.) Antar även att tutorialen jag följer kommer vara rätt värdelös då vi kör på olika API.

Permalänk
Medlem
Skrivet av Addeez:

Okej tackar! Jag följer en youtube tutorial och gör det som han gör. Måste medge att jag är väldigt vilsen men det är väl lätt så i början. I xampp står det att jag kör MySQL. Var ser jag att det är MySQLI som används?? (ledsen för dumma frågor.) Antar även att tutorialen jag följer kommer vara rätt värdelös då vi kör på olika API.

Då du kopplar upp dig med mysqli_connect så vet du att det är MySQLI du använder. Det gamla MySQL-APIet finns inte i nyare versioner av PHP och därför får du felmeddelandet.

Du bör kunna använda tutorialen då MySQLI mappar ganska bra (perfekt?) mot det gamla APIet och funkar inte en sak så är det läge att börja lära sig att använda PHPs utmärkta (enligt mig) dokumentation.

Edit : Nedantående har naturligtvis rätt.

Permalänk
Geeks
Jobbar med data

Jag skulle råda dig att byta tutorial, den verkar väldigt gammal. Ser ju bl.a. att den använder md5 för lösenordskryptering. Vilket är helt felaktigt.

Det man skall använda, om man inte vet hur man implementerar en egen är password_hash.

Rekommenderar att du letar upp en PDO och PHP guide för att lära dig grunderna i hur man kommunicerar med en databas. Självklart fungera Mysqli med, det man skall leta efter är en guide som går igenom "prepared statements" för att säkert kommunicera med databasen.