Permalänk
Medlem

PHP variable error

Hejsan, har ett litet problem: mappen (mkdir) skapas men filen som ska kopieras till mappen som skapas kopieras inte.

Felmeddelanden jag får när jag läser in koden är:

Notice: Undefined variable: username in /var/www/hhniserve1/www/mitt-pv/users/register.php on line 71

Warning: mkdir(): No such file or directory in /var/www/hhniserve1/www/mitt-pv/users/register.php on line 71

Warning: copy(/mitt-pv/files-to-copy/index.php): failed to open stream: No such file or directory in /var/www/hhniserve1/www/mitt-pv/users/register.php on line 76
failed to copy

PHP kod:

<?php require_once("functions.php"); require_once("db-const.php"); session_start(); if (logged_in() == true) { redirect_to("profile.php"); } ?> <html> <head> <title>Registrera dig</title> </head> <body> <!-- The HTML registration form --> <form action="<?=$_SERVER['PHP_SELF']?>" method="post"> Användarnamn: <input type="text" name="username" /><br /> Lösenord: <input type="password" name="password" /><br /> Förnamn: <input type="text" name="first_name" /><br /> Efternamn: <input type="text" name="last_name" /><br /> Email: <input type="type" name="email" /><br /> <input type="submit" name="submit" value="Register" /> <a href="login.php">Jag har redan ett konto...</a> </form> <?php if (isset($_POST['submit'])) { $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); if ($mysqli->connect_errno) { echo "<p>MySQL error no {$mysqli->connect_errno} : {$mysqli->connect_error}</p>"; exit(); } $username = $_POST['username']; $password = $_POST['password']; $first_name = $_POST['first_name']; $last_name = $_POST['last_name']; $email = $_POST['email']; $exists = ""; $result = $mysqli->query("SELECT username from users WHERE username = '{$username}' LIMIT 1"); if ($result->num_rows == 1) { $exists .= "u"; } $result = $mysqli->query("SELECT email from users WHERE email = '{$email}' LIMIT 1"); if ($result->num_rows == 1) { $exists .= "e"; } if ($exists == "u") echo "<p> Användarnamnet finns redan i databasen! </p>"; else if ($exists == "e") echo "<p>E-posten finns redan registrerad på ett annat konto!</p>"; else if ($exists == "ue") echo "<p><b>Error:</b>Användarnamnet och e-postadressen finns redan i databasen!</p>"; else { # insert data into mysql database $sql = "INSERT INTO `users` (`id`, `username`, `password`, `first_name`, `last_name`, `email`) VALUES (NULL, '{$username}', '{$password}', '{$first_name}', '{$last_name}', '{$email}')"; if ($mysqli->query($sql)) { redirect_to("/mitt-pv/profile.php"); } else { echo "<p>MySQL error no {$mysqli->errno} : {$mysqli->error}</p>"; exit(); } } } mkdir($username, 0777); $file = '/mitt-pv/files-to-copy/index.php'; $newfile = '$username."/choose.php'; if (!copy($file, '$newfile')) { echo "failed to copy"; } ?> </body> </html>

har läst runt på nätet och kollat igenom skriptet flera gånger men hittar inget fel

MVH ☺

Permalänk
Medlem

$newfile = '$username."/choose.php';

säkert att du inte har missat något?

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Medlem
Skrivet av Christley:

$newfile = '$username."/choose.php';

säkert att du inte har missat något?

Jo har ju självklart missat något men ser dock fortfarande inte vad det är 😂😜

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av hampuz13:

Jo har ju självklart missat något men ser dock fortfarande inte vad det är 😂😜

Skickades från m.sweclockers.com

kolla antalet citattecken

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Medlem
Skrivet av Christley:

kolla antalet citattecken

Hej och tack för svaret, när jag ändrat till:
$newfile = '$username./choose.php';

så försvinner en varning men filen kopieras dock ändå inte ☺

Skickades från m.sweclockers.com

Permalänk
Medlem
Skrivet av hampuz13:

Hej och tack för svaret, när jag ändrat till:
$newfile = '$username./choose.php';

så försvinner en varning men filen kopieras dock ändå inte ☺

Om du vill använda variabler på det viset i strängar måste du använda dubbelfnuttar ("), annars läses inte variabelns värde och du får uttryckligen tecknen $username. Ett alternativ är att du konkatenerar strängarna med .-operatorn.

Visa signatur

Spela Swemantle! Du vet att du vill.

Ibland har jag fel, men då är det någon annans fel.

Permalänk
Medlem
Skrivet av hampuz13:

Hej och tack för svaret, när jag ändrat till:
$newfile = '$username./choose.php';

så försvinner en varning men filen kopieras dock ändå inte ☺

Skickades från m.sweclockers.com

inte korrekt iaf.
du ska inte "encasea" en variabel. korrekt hade varit:
$newfile = $username ."/choose.php";

Visa signatur

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Permalänk
Medlem
Skrivet av Christley:

inte korrekt iaf.
du ska inte "encasea" en variabel. korrekt hade varit:
$newfile = $username ."/choose.php";

Tack så jätte mycket, nu funkar det. ☺😊

Skickades från m.sweclockers.com