Avatar billede noodrem Nybegynder
19. februar 2004 - 15:51 Der er 7 kommentarer og
1 løsning

uforståelig error i php script

Hej

Jeg har følgende kode:

<?php
session_start();
?>

<html>
<head>
<title>Opret bruger</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>



<?php

$id = microtime();
$navn = $_REQUEST['navn'];
$efternavn = $_REQUEST['efternavn'];
$alder = $_REQUEST['alder'];
$brugernavn = $_REQUEST['brugernavn'];
$mail = $_REQUEST['mail'];
$password = $_REQUEST['password'];
$pw_repeat = $_REQUEST['pw_repeat'];

mysql_connect("localhost", "root");
mysql_select_db("news");

//Tjek værdi af inputs, sæt variabler derfter

$red = "class='red'";
$udfyld = "<div id='red'>Feltet skal udfyldes</div>";

//Værdier til brugernavn variabler sættes

$query_user = mysql_query("select * from users where brugernavn = '$brugernavn'")
or die('Mysql error');
$number = mysql_num_rows($query_user);

if($brugernavn == "") {

$_SESSION['user'] = "";
$fejl = "fejl";
$fejl_user = $udfyld;
$red_user = $red;
} elseif($number > 0) {

$fejl = "fejl";
$fejl_user = "<div id='red'>Det valgte brugernavn er optaget</div>";
$red_user = $red;
$_SESSION['user'] = $brugernavn;
} else {

$_SESSION['user'] = $brugernavn;
$red_user = "";
$fejl_user = "";
}

//Værdier til mail variabler sættes

$query_mail = mysql_query("select mail from users where mail = '$mail'")
or die('Mysql error');

$number_mail = mysql_num_rows($query_mail);

if($mail == "") {
$fejl_mail = $udfyld;
$fejl = "fejl";
$red_mail = $red;
$_SESSION['mail'] = "";

} elseif($number_mail > 0) {

$fejl = "fejl";
$fejl_mail = "<div id='red'>Den valgte E-mail adresse bliver allerede brugt af en anden bruger</div>";
$red_mail = $red;
$_SESSION['mail'] = "";
} else {

$_SESSION['mail'] = $mail;
$red_mail = "";
$fejl_mail = "";
}

//Variabler til alder sættes

if($alder == "") {

$fejl_alder = $udfyld;
$fejl = "fejl";
$red_alder = $red;
$_SESSION['alder'] = "";
} elseif($alder < 15) {

$_SESSION['alder'] = $alder;
$fejl_alder = "<div id='red'>Du skal være 15 år, eller derover for at oprette en bruger hos Slumkum</div>";
$fejl = "fejl";
$red_alder = $red;
} else {

$_SESSION['alder'] = $alder;
$red_mail = "";
$fejl_alder = "";
}

//Variabler til password sættes

if($password == "") {
$fejl_pw = $udfyld;
$fejl = "fejl";
$red_pw = $red;
} elseif($password != $pw_repeat) {

$fejl_pw = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
$red_pw = $udfyld;
$fejl = "fejl";
} else {
$fejl_pw = "";
$red_pw = "";

//Variabler til pw_repeat sættes

if($pw_repeat == "") {
$fejl_repeat = $udfyld;
$fejl = "fejl";
$red_repeat = $red;
}

if($pw_repeat != $password) {

$fejl_repeat = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
$fejl = "fejl";
$red_repeat = $red;
} else {

$red_repeat = "";
$fejl_repeat = "";
}

//Hvis isset fejl

if(isset($fejl)) {
echo "<form action='opret_check.php' method='post'>";
echo "<p><div id='red'>Brugeren kunne ikke oprettes. Fejlene står beskrevet med rødt længere nede</div>";
echo "Navn:<br /><input type='text' name='navn'><br />";
echo "Efternavn: *<br /><input type='text' name='efternavn'><br />";
echo "Alder: *<br /><input $red_alder type='text' name='alder' value='{$_SESSION['alder']}'>  $fejl_alder<br />";
echo "Ønsket brugernavn: *<br /><input $red_user type='text' name='brugernavn' value='{$_SESSION['user']}'>  $fejl_user<br />";
echo "E-post: *<br /><input $red_mail type='text' name='mail' value=''{$_SESSION['mail']}'>  $fejl_mail<br />";
echo "Adgangskode: *<br /><input $red_pw type='password' name='password'>  $fejl_pw <br />";
echo "Gentag adgangskode: *<br /><input $red_repeat type='password' name='pw_repeat'>  $fejl_repeat<p />";
echo "<input type='submit' name='opret_user' value='Opret'>";
echo "</form> ";
echo "<p>OBS: felter med * skal udfyldes</p>";

//Variabler unsettes

unset($fejl);
unset($red_alder);
unset($fejl_alder);
unset($red_user);
unset($fejl_user);
unset($red_mail);
unset($fejl_mail);
unset($red_pw);
unset($fejl_pw);

} else {

//Hvis ingen fejl, bliver bruger oprettet

mysql_query("insert into users (id, brugernavn, password, pw_repeat, navn, efternavn, mail, alder) VALUES ('$id', '$brugernavn', '$password', '$pw_repeat', '$navn', '$efternavn', '$mail', '$alder')")
or die('Mysql error');

echo "Bruger $brugernavn er oprettet";
}

?>

</body>

</html>


Men når jeg tester det i en browser får jeg følgende fejl medd:

Parse error: parse error, unexpected $ in /home/mikkel/webs/login/opret_check.php on line 181

Det kan jeg ikke forstå, for linje 181 er den sidste linje i hele min kode ( </html> )  Og der er da ingen $
Avatar billede shjorth Nybegynder
19. februar 2004 - 15:54 #1
det kan ofte være fordi du mangler en "); eller }
Avatar billede shjorth Nybegynder
19. februar 2004 - 15:57 #2
} else {
$fejl_pw = "";
$red_pw = "";
mangler du at lukke den ???
Avatar billede schaefner Juniormester
19. februar 2004 - 15:57 #3
Hvis du laver indryk i din kode, så bliver det lidt nemmere at fejlfinde.
Avatar billede noodrem Nybegynder
19. februar 2004 - 16:03 #4
Jep, det var fejlen. Tak for hjælpen.
Nogle ideer til hvor jeg kan lave indryk i min kode for at gøre den mere overskuelig?
Avatar billede schaefner Juniormester
19. februar 2004 - 16:09 #5
Du kan prøve at se på din egen kode når der er indryk. Det burde være klart for en hver, at det nu er nemmere at opdage en sådan fejl som de
du havde.

<?php
session_start();
?>
<html>
<head>
<title>Opret bruger</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>

<body>

<?php
$id = microtime();
$navn = $_REQUEST['navn'];
$efternavn = $_REQUEST['efternavn'];
$alder = $_REQUEST['alder'];
$brugernavn = $_REQUEST['brugernavn'];
$mail = $_REQUEST['mail'];
$password = $_REQUEST['password'];
$pw_repeat = $_REQUEST['pw_repeat'];

mysql_connect("localhost", "root");
mysql_select_db("news");

//Tjek værdi af inputs, sæt variabler derfter
$red = "class='red'";
$udfyld = "<div id='red'>Feltet skal udfyldes</div>";

//Værdier til brugernavn variabler sættes

$query_user = mysql_query("SELECT * FROM users WHERE brugernavn = '$brugernavn'") or die('Mysql error');
$number = mysql_num_rows($query_user);

if ($brugernavn == "") {
    $_SESSION['user'] = "";
    $fejl = "fejl";
    $fejl_user = $udfyld;
    $red_user = $red;
} elseif ($number > 0) {
    $fejl = "fejl";
    $fejl_user = "<div id='red'>Det valgte brugernavn er optaget</div>";
    $red_user = $red;
    $_SESSION['user'] = $brugernavn;
} else {
    $_SESSION['user'] = $brugernavn;
    $red_user = "";
    $fejl_user = "";
}

//Værdier til mail variabler sættes
$query_mail = mysql_query("SELECT mail FROM users WHERE mail = '$mail'") or die('Mysql error');
$number_mail = mysql_num_rows($query_mail);

if ($mail == "") {
    $fejl_mail = $udfyld;
    $fejl = "fejl";
    $red_mail = $red;
    $_SESSION['mail'] = "";
} elseif ($number_mail > 0) {
    $fejl = "fejl";
    $fejl_mail = "<div id='red'>Den valgte E-mail adresse bliver allerede brugt af en anden bruger</div>";
    $red_mail = $red;
    $_SESSION['mail'] = "";
} else {
    $_SESSION['mail'] = $mail;
    $red_mail = "";
    $fejl_mail = "";
}

//Variabler til alder sættes
if ($alder == "") {
    $fejl_alder = $udfyld;
    $fejl = "fejl";
    $red_alder = $red;
    $_SESSION['alder'] = "";
} elseif ($alder < 15) {
    $_SESSION['alder'] = $alder;
    $fejl_alder = "<div id='red'>Du skal være 15 år, eller derover for at oprette en bruger hos Slumkum</div>";
    $fejl = "fejl";
    $red_alder = $red;
} else {
    $_SESSION['alder'] = $alder;
    $red_mail = "";
    $fejl_alder = "";
}

//Variabler til password sættes
if($password == "") {
    $fejl_pw = $udfyld;
    $fejl = "fejl";
    $red_pw = $red;
} elseif ($password != $pw_repeat) {
    $fejl_pw = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
    $red_pw = $udfyld;
    $fejl = "fejl";
} else {
    $fejl_pw = "";
    $red_pw = "";
}
//Variabler til pw_repeat sættes
if ($pw_repeat == "") {
    $fejl_repeat = $udfyld;
    $fejl = "fejl";
    $red_repeat = $red;
}
if ($pw_repeat != $password) {
    $fejl_repeat = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
    $fejl = "fejl";
    $red_repeat = $red;
} else {
    $red_repeat = "";
    $fejl_repeat = "";
}

//Hvis isset fejl
if (isset($fejl)) {
    echo "<form action='opret_check.php' method='post'>";
    echo "<p><div id='red'>Brugeren kunne ikke oprettes. Fejlene står beskrevet med rødt længere nede</div>";
    echo "Navn:<br /><input type='text' name='navn'><br />";
    echo "Efternavn: *<br /><input type='text' name='efternavn'><br />";
    echo "Alder: *<br /><input $red_alder type='text' name='alder' value='{$_SESSION['alder']}'>  $fejl_alder<br />";
    echo "Ønsket brugernavn: *<br /><input $red_user type='text' name='brugernavn' value='{$_SESSION['user']}'>  $fejl_user<br />";
    echo "E-post: *<br /><input $red_mail type='text' name='mail' value=''{$_SESSION['mail']}'>  $fejl_mail<br />";
    echo "Adgangskode: *<br /><input $red_pw type='password' name='password'>  $fejl_pw <br />";
    echo "Gentag adgangskode: *<br /><input $red_repeat type='password' name='pw_repeat'>  $fejl_repeat<p />";
    echo "<input type='submit' name='opret_user' value='Opret'>";
    echo "</form> ";
    echo "<p>OBS: felter med * skal udfyldes</p>";

    //Variabler unsettes
    unset($fejl, $red_alder, $fejl_alder, $red_user, $fejl_user, $red_mail, $fejl_mail, $red_pw, $fejl_pw);
} else {
    //Hvis ingen fejl, bliver bruger oprettet
    mysql_query("INSERT INTO users (id, brugernavn, password, pw_repeat, navn, efternavn, mail, alder) VALUES ('$id', '$brugernavn', '$password', '$pw_repeat', '$navn', '$efternavn', '$mail', '$alder')") or die('Mysql error');
    echo "Bruger $brugernavn er oprettet";
}
?>

</body>
</html>
Avatar billede noodrem Nybegynder
19. februar 2004 - 16:15 #6
jep du har ret.
Avatar billede noodrem Nybegynder
19. februar 2004 - 16:18 #7
Nu modtager jeg endnu en uforståelig fejlmedd i min kode:

<?php
session_start();
?>

<html>
<head>
<title>Opret bruger</title>
<link rel="stylesheet" type="text/css" href="stylesheet.css">
</head>
<body>



<?php

$id = microtime();
$navn = $_REQUEST['navn'];
$efternavn = $_REQUEST['efternavn'];
$alder = $_REQUEST['alder'];
$brugernavn = $_REQUEST['brugernavn'];
$mail = $_REQUEST['mail'];
$password = $_REQUEST['password'];
$pw_repeat = $_REQUEST['pw_repeat'];
$_SESSION['navn'] = $navn;
$_SESSION['efternavn'] = $efternavn;

mysql_connect("localhost", "root");
mysql_select_db("news");

//Fejl variabler sættes

$red = "class='red'";
$udfyld = "<div id='red'>Feltet skal udfyldes</div>";

//Værdier til brugernavn variabler sættes

$query_user = mysql_query("select * from users where brugernavn = '$brugernavn'")
or die('Mysql error');
$number = mysql_num_rows($query_user);

if($brugernavn == "") {

$_SESSION['user'] = "";
$fejl = "fejl";
$fejl_user = $udfyld;
$red_user = $red;
} elseif($number > 0) {

$fejl = "fejl";
$fejl_user = "<div id='red'>Det valgte brugernavn er optaget</div>";
$red_user = $red;
$_SESSION['user'] = $brugernavn;
} else {

$_SESSION['user'] = $brugernavn;
$red_user = "";
$fejl_user = "";
}

//Værdier til mail variabler sættes

$query_mail = mysql_query("select mail from users where mail = '$mail'")
or die('Mysql error');

$number_mail = mysql_num_rows($query_mail);

if($mail == "") {
$fejl_mail = $udfyld;
$fejl = "fejl";
$red_mail = $red;
$_SESSION['mail'] = "";

} elseif($number_mail > 0) {

$fejl = "fejl";
$fejl_mail = "<div id='red'>Den valgte E-mail adresse bliver allerede brugt af en anden bruger</div>";
$red_mail = $red;
$_SESSION['mail'] = "";
} else {

$_SESSION['mail'] = $mail;
$red_mail = "";
$fejl_mail = "";
}

//Variabler til alder sættes

if($alder == "") {

$fejl_alder = $udfyld;
$fejl = "fejl";
$red_alder = $red;
$_SESSION['alder'] = "";
} elseif($alder < 15) {

$_SESSION['alder'] = $alder;
$fejl_alder = "<div id='red'>Du skal være 15 år, eller derover for at oprette en bruger hos Slumkum</div>";
$fejl = "fejl";
$red_alder = $red;
} else {

$_SESSION['alder'] = $alder;
$red_mail = "";
$fejl_alder = "";
}

//Variabler til password sættes

if($password == "") {
$fejl_pw = $udfyld;
$fejl = "fejl";
$red_pw = $red;
$_SESSION['password'] = "";
} elseif($password != $pw_repeat) {

$fejl_pw = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
$red_pw = $red;
$fejl = "fejl";
$_SESSION['password'] = $password;
} else {
$fejl_pw = "";
$red_pw = "";
$_SESSION['password] = $password;

//Variabler til pw_repeat sættes

} if($pw_repeat == "") {
$fejl_repeat = $udfyld;
$fejl = "fejl";
$red_repeat = $red;
$_SESSION['pw_repeat'] = "";
}

if($pw_repeat != $password) {

$fejl_repeat = "<div id='red'>De to indtastede kodeord er ikke identiske</div>";
$fejl = "fejl";
$red_repeat = $red;
$_SESSION['pw_repeat'] = $pw_repeat;
} else {

$_SESSION['pw_repeat'] = $pw_repeat;
$red_repeat = "";
$fejl_repeat = "";
}

//Hvis isset fejl

if(isset($fejl)) {
echo "<form action='opret_check.php' method='post'>";
echo "<p><div id='red'>Brugeren kunne ikke oprettes. Fejlene står beskrevet med rødt længere nede</div>";
echo "Navn:<br /><input type='text' name='navn' value='{$_SESSION['navn']}'><br />";
echo "Efternavn:<br /><input type='text' name='efternavn' value='{$_SESSION['efternavn']}'><br />";
echo "Alder: *<br /><input $red_alder type='text' name='alder' value='{$_SESSION['alder']}'>  $fejl_alder<br />";
echo "Ønsket brugernavn: *<br /><input $red_user type='text' name='brugernavn' value='{$_SESSION['user']}'>  $fejl_user<br />";
echo "E-post: *<br /><input $red_mail type='text' name='mail' value='{$_SESSION['mail']}'>  $fejl_mail<br />";
echo "Adgangskode: *<br /><input $red_pw type='password' name='password' value='{$_SESSION['password']}'>  $fejl_pw<br />";
echo "Gentag adgangskode: *<br /><input $red_repeat type='password' name='pw_repeat' value='{$_SESSION['pw_repeat']}'>  $fejl_repeat<p />";
echo "<input type='submit' name='opret_user' value='Opret'>";
echo "</form> ";
echo "<p>OBS: felter med * skal udfyldes</p>";

//Variabler unsettes

unset($fejl);
unset($red_alder);
unset($fejl_alder);
unset($red_user);
unset($fejl_user);
unset($red_mail);
unset($fejl_mail);
unset($red_pw);
unset($fejl_pw);

} else {

//Hvis ingen fejl, bliver bruger oprettet

mysql_query("insert into users (id, brugernavn, password, pw_repeat, navn, efternavn, mail, alder) VALUES ('$id', '$brugernavn', '$password', '$pw_repeat', '$navn', '$efternavn', '$mail', '$alder')")
or die('Mysql error');

echo "Bruger $brugernavn er oprettet";
}

?>

</body>

</html>

Hvor den siger:

Parse error: parse error, unexpected T_STRING, expecting ']' in /home/mikkel/webs/login/opret_check.php on line 131

Linje 131 ser således ud:

$_SESSION['pw_repeat'] = "";

og der mangler da ingen [
Avatar billede Slettet bruger
20. februar 2004 - 00:50 #8
Tre tip:

Skriv fejlmeddelelsen før koden. Så ved man, hvad man skal se efter, så man ikke først skal ned i bunden for at se fejlbeskeden og derefter op igen for at lede i koden.

Fortæl mere præcist hvilekn linie, der giver fejlen. Jeg ved ikke med de andre, men jeg gider ikke sidde og tælle til 131. Du kan gøre det ved at skrive en kommentar i stil med // DETTE ER LINIE 131 i din kode.

Og det tredje: Ryd op og lav indrykning i din kode. Så er det meget nemmere at overskue - både for dig selv og for os, der prøver at hjælpe.

Din fejl optræder, fordi der mangler en ' i denne linie lidt højere oppe.

$_SESSION['password] = $password;

Derfor forsøger php at se på sessionsvariablen med dette (meget lange) navn:

password ]= $password;

//Variabler til pw_repeat sættes

} if($pw_repeat == "") {
$fejl_repeat = $udfyld;
$fejl = "fejl";
$red_repeat = $red;
$_SESSION[

for det er tegnene indtil næste ' kommer, og næste ' er netop i linien med $_SESSION['pw_repeat'] = "";
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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