Avatar billede Friis77 Praktikant
11. februar 2024 - 19:58 Der er 5 kommentarer

Hjælp til PHP

Hej

Jeg leger lidt med PHP og MySql og er nybegynder med stor streg under.
Jeg er løbet lidt ind i et problem med en opret bruger side, der ikke vil se ud som jeg gerne vil have den til, den melder fejl, nå jeg indlæser siden.

( ! ) Notice: Undefined index: username in C:\wamp64\www\fesmanager\admin\create_user.php on line 48
Call Stack
#    Time    Memory    Function    Location
1    0.0051    247824    {main}( )    ...\create_user.php:0

Det samme på alle liner 48 - 54.

Nogle der ved hvorfor???? hvad er det jeg ikke kan se/gennemskue.

På forhånd tak
Avatar billede claes57 Ekspert
11. februar 2024 - 20:52 #1
Til alt held for dig, så har vi ikke adgang til "C:\wamp64\www\fesmanager\admin"
Hvid du kunne droppe kildekoden til "create_user.php" herinde, så er der sikkert en nørd eller to, der kan finde en lille 'ups' i koden.
Avatar billede Friis77 Praktikant
11. februar 2024 - 21:11 #2
ok jeg smider php filen ind her så:
<?php
// Tilføre Header.php her
include 'c:/wamp64/www/fesmanager/includes/header.php';

// Databaseforbindelsen her
  include 'c:/wamp64/www/fesmanager/includes/database.php';
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Opret Bruger.</title>
</head>
<body>
<p align="center">Opret Bruger. </p>
<br />
<form action="create_user.php" method="POST">
  <div align="center">Brugernavn.: 
    <input type="text" name="username" placeholder="Brugernavn" required>
    <br>
  Adgangskode: 
  <input type="password" name="password" placeholder="Adgangskode" required>
  <br>
  Navn: 
  <input type="text" name="first_name" placeholder="Fornavn" required>
  <br>
  Efternavn: 
  <input type="text" name="last_name" placeholder="Efternavn" required>
  <br>
  E-Mail: 
  <input type="email" name="email" placeholder="Email" required>
  <br>
  Mobil: 
  <input type="text" name="mobile" placeholder="Mobil" required>
  <br>
  Stabsnavn: 
  <input type="text" name="staff_name" placeholder="Stabsnavn" required>
  <br>
  <input type="submit" value="Opret bruger">
  </div>
</form>
</body>
</html>
<?php

// Henter form data og undgår SQL Injection
$username = $_POST["username"];
$password = $conn->real_escape_string($_POST['password']);
$first_name = $conn->real_escape_string($_POST['first_name']);
$last_name = $conn->real_escape_string($_POST['last_name']);
$email = $conn->real_escape_string($_POST['email']);
$mobile = $conn->real_escape_string($_POST['mobile']);
$staff_name = $conn->real_escape_string($_POST['staff_name']);

// Indsætter bruger i databasen
$sql = "INSERT INTO Users (username, password, first_name, last_name, email, mobile, staff_name)
VALUES ('$username', '$password', '$first_name', '$last_name', '$email', '$mobile', '$staff_name')";

if ($conn->query($sql) === TRUE) {
  echo "Bruger oprettet succesfuldt.";
} else {
  echo "Fejl: " . $sql . "<br>" . $conn->error;
}

// Lukker databaseforbindelsen
$conn->close();
?>

Jeg håber det måske kan hjælpe.
Avatar billede erikjacobsen Ekspert
11. februar 2024 - 21:55 #3
Den siger en advarsel om at $_POST["username"] ikke findes, for du har endnu ikke trykket på submit-knappen. En nem løsning vil være at spørge på om der faktisk er en værdi:


if (isset($_POST["username"])) {
  $username = $_POST["username"];
  ....ogsaavidere
}
Avatar billede Friis77 Praktikant
12. februar 2024 - 01:24 #4
Tak det hjalp til en vis grad, nu er advarslerne væk, men det som om den selv trykker på submit-knappen, den skriver nemlig "bruger er oprettet" nå jeg kommer ind på siden og den oprette så en tom line i MySql-databasen.
Avatar billede erikjacobsen Ekspert
12. februar 2024 - 07:55 #5
Du skal sørge for at alt det "spændende" er inde i den if-sætning fra #3 - ikke bare aflæsning af brugerens indtastninger.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester