Hjälp med php och mysql (webbserverprogrammering 1)

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

Hjälp med php och mysql (webbserverprogrammering 1)

Problemet lite längre ner i kommentarerna.

Trädvy Permalänk
Medlem
Registrerad
Jul 2015

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

Skoj: i5 8600k @4,8GHz, Z370-P ATX, 1070 ROG Strix 8 GB, 16 GB DDR4 @3200MHz, Kraken X62
Jobb: Dell XPS 13 9370 4K
Privat: Macbook Pro 13" late 2016

Trädvy Permalänk
Medlem
Plats
::1
Registrerad
Apr 2010
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

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

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>

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004
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.

Trädvy Permalänk
Medlem
Registrerad
Aug 2012
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.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004
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.

Trädvy Permalänk
Jobbar med data
Kallas Takida
Registrerad
Nov 2011

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.