Avatar billede hoejgaard Juniormester
23. juni 2003 - 13:56 Der er 51 kommentarer og
1 løsning

fejl i php script

Jeg har lavet følgende kode, som melder en fejl :

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in c:\apache\apache\htdocs\registrering\opdatering.php on line 97

Jeg har markeret stedet i koden med ********



<?php

//require( './valid.php');
if (empty($_POST[brugernavn]))
{
    echo "Du mangler at indtaste dit brugernavn. Gå tilbage og prøv igen. ";
    exit;
} 

if (empty($_POST[password]))
{
    echo "Du mangler at indtaste dit password. Gå tilbage og prøv igen. ";
    exit;
} 

if (empty($_POST[password2]))
{
    echo "Du skal indtaste dit password to gange. Gå tilbage og prøv igen. ";
    exit;
}
if (empty($_POST[land]))
{
    echo "Du mangler at indtaste det land du er bosat i. Gå tilbage og prøv igen. ";
    exit;
}

if (empty($_POST[fornavn]))
{
    echo "Du mangler at indtaste dit fornavn. Gå tilbage og prøv igen. ";
    exit;
} 

if (empty($_POST[eftnavn]))
{
    echo "Du mangler at indtaste dit efternavn. Gå tilbage og prøv igen. ";
    exit;
}

if (empty($_POST[adresse]))
{
    echo "Du mangler at indtaste din adresse. Gå tilbage og prøv igen. ";
    exit;
} 


if (empty($_POST[postnr]))
{
    echo "Du mangler at indtaste postnummer. Gå tilbage og prøv igen. ";
    exit;
} 

if (empty($_POST[byen]))
{
    echo "Du mangler at indtaste by navn. Gå tilbage og prøv igen. ";
    exit;
}

if (empty($_POST[tlf]))
{
    echo "Du mangler at indtaste dit tlf. nr.. Gå tilbage og prøv igen. ";
    exit;
} 


if (empty($_POST[email]))
{
    echo "Du mangler at indtaste din email adresse. Gå tilbage og prøv igen. ";
    exit;
} 


if (!eregi("^[a-zA-ZØ-9_]+@[a-zA-ZØ-9\-]+\.[a-zA-ZØ-9\-\.]+$" , $_POST[email]))
{
    echo "Den indtastede email adresse er ikke gyldig. Gå tilbage og prøv igen. ";
    exit;
}

// checker om de to indtasted passwords er ens
if ($_POST[password] != $_POST[password2])
{
      echo 'De to passwords du har indtastet er ikke ens. Gå tilbage og prøv igen.";
      exit;
}

// checker om password længden er ok
if (strlen($_POST[password)]<6  | |  strlen($_POST[password]) >16)
{
      echo "Dit password skal indeholde mellem 6 og 16 karakterer. Gå tilbage og prøv igen";
      exit;
}

if ($_POST[brugernavn] && $_POST[password])


*****I LINIEN HERUNDER MELDER DEN FEJL*********
{
  $db = mysql_connect("localhost","root");
    mysql_select_db("registrering",$db);
    $query = "select * from kunde
                    where brugernavn = '$_POST[brugernavn]' and
                              password = '$_POST[password]'";
   
    $result = mysql_query($query);
    if($result)
{
      echo 'brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.';
      exit;
}
}



$db = mysql_connect("localhost","root");
mysql_select_db("registrering",$db);



$sql="INSERT INTO kunde(brugernavn,PASSWORD,land,fornavn,eftnavn,adresse,postnr,byen,tlf,email)
VALUES('$_POST[brugernavn]','$_POST[PASSWORD]','$_POST[land]','$_POST[fornavn]','$_POST[eftnavn]','$_POST[adresse]','$_POST[postnr]','$_POST[byen]','$_POST[tlf]','$_POST[email]')";

$result = mysql_query($sql) or die(mysql_error());

mail("dfg@jsj.dk","Nyt indlæg i gæstebogen fra ".$_POST[eftnavn],"From:  ".$_POST[email]);


?>

<html>
<title>Opdater</title>
<body bgcolor="#FFFFFF">

Du er nu blevet tilmeldt og kan herefter logge ind og handle. <a href="emailform1.php">Klik for at vende tilbage til forsiden</a>
</body>
</html>
Avatar billede dknsj Nybegynder
23. juni 2003 - 13:59 #1
hvor er linei 97
Avatar billede ahv Nybegynder
23. juni 2003 - 14:02 #2
if (strlen($_POST[password])<6  | |  strlen($_POST[password]) >16)
{
Avatar billede ahv Nybegynder
23. juni 2003 - 14:02 #3
if (strlen($_POST[password])<6 || strlen($_POST[password]) >16)
{
Avatar billede melange Nybegynder
23. juni 2003 - 14:02 #4
du mangler at angive password til din MySQL database :)
Hvis dit password bare er en tom streng (dvs ingenting)

skal din connection se sådan her ud:

$db = mysql_connect("localhost","root", "");
Avatar billede jakoba Nybegynder
23. juni 2003 - 14:05 #5
det kunne ske hvis der er mellemrum eller anførselstegn i enten brugernavn eller password

men lad os se hvad andre finder.
Avatar billede jakoba Nybegynder
23. juni 2003 - 14:06 #6
Nåja  | |  skal være  ||
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:08 #7
ahv : dit svar hvad mener du med det, det er det samme som jeg har skrevet ??????
Avatar billede melange Nybegynder
23. juni 2003 - 14:08 #8
err...i din query hvor du tjekker om brugernavnet og passwordet er optaget bør du nok nøjes med at tjekke om brugernavnet er optaget.
Ellers er det det samme som at sige:
"Brugernavn og password er optaget. Gå tilbage og prøv en anden kombination, eller log in som ham der allerede er oprettet."
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:09 #9
den melder fejl der hvor jeg har skrevet :

if ($_POST[brugernavn] && $_POST[password])


*****I LINIEN HERUNDER MELDER DEN FEJL*********
{
  $db = mysql_connect("localhost","root");
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:10 #10
melange : dit svar omkring password til MySQL, det er ikke det samme som det password bruger indtaste vel ????????
Avatar billede melange Nybegynder
23. juni 2003 - 14:14 #11
hoejgaard << Det kan godt være....[tester]..hmm..jo du har ret. Jeg beklager meget :(
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:14 #12
melange : melder stadig fejl melange, selvom jeg har rettet det med passwordet..
Avatar billede Slettet bruger
23. juni 2003 - 14:15 #13
Tilføj nu ahv's rettelse. Du mangler en slut parentes på den linje.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:16 #14
er lidt i tvivl om dette er skrevet rigtigt :

$query = "select * from kunde
                    where brugernavn = '$_POST[brugernavn]' and
                              password = '$_POST[password]'";
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:19 #15
mercur8 : såvidt jeg kan se er der 3 venstre paranteser og 3 højre paranteser, så det stemmer da ????
Avatar billede Slettet bruger
23. juni 2003 - 14:20 #16
Den første slutparentes står forkert.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:25 #17
melder stadig fejl, efter jeg har flyttet slutparantesen..
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:27 #18
ingen der har det gyldne guld korn :)
Avatar billede ahv Nybegynder
23. juni 2003 - 14:28 #19
hoejgaard -> Bestemt ikke det samme se efter igen, du har skrevet ->

if (strlen($_POST[password)]<6  | |  strlen($_POST[password]) >16)
{

Jeg retter det til ->

if (strlen($_POST[password])<6 || strlen($_POST[password]) >16)
{
Avatar billede ahv Nybegynder
23. juni 2003 - 14:29 #20
I din er der byttet rundt på ) og ]
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:35 #21
Ja okay, det har jeg rettet, og fejl meddelelsen er stadig den samme
Avatar billede jakoba Nybegynder
23. juni 2003 - 14:38 #22
så hvad præcis siger fejlmeddelelsen lige nu ?
Jeg går ud fra du har også fjernet mellemrummen i | | så der nu står ||
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:49 #23
den siger som før rettelserne :

Parse error: parse error, unexpected T_VARIABLE, expecting ',' or ';' in c:\apache\apache\htdocs\registrering\opdatering.php on line 97
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:53 #24
og det er her :

if ($_POST[brugernavn] && $_POST[password])


***********I LINIEN HERUNDER MELDER DEN FEJL*******************
{
  $db = mysql_connect("localhost","root");
    mysql_select_db("registrering",$db);
    $query = "select * from kunde
                    where brugernavn = '$_POST[brugernavn]' and
                              password = '$_POST[password]'";
Avatar billede jakoba Nybegynder
23. juni 2003 - 14:54 #25
I så fald må linie 97 være OVER den linie hvor du nu har lavet rettelser.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 14:57 #26
ja linien hvor jeg har rettet kommer før linie 97
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:03 #27
Jeg har gennemset det 100 gange og kan ikke se hvad det kan være, har i givet op ?????
Avatar billede ahv Nybegynder
23. juni 2003 - 15:03 #28
Kan du ikke poste koden her, unden den der her er fejlen linie også fortælle hvilken linie fejlen er i?
Avatar billede jakoba Nybegynder
23. juni 2003 - 15:04 #29
et vildt gæt: er den fil du viser os virkelig c:\apache\apache\htdocs\registrering\opdatering.php
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:16 #30
ja hvorfor jacoba
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:19 #31
jacoba : hvorfor siger du et vildt gæt ??????????????????
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:20 #32
her er fejlen søreme :

// checker om de to indtasted passwords er ens
if ($_POST[password] != $_POST[password2])
{
      echo 'De to passwords du har indtastet er ikke ens. Gå tilbage og prøv igen.";
      exit;
}


efter echo står der ' skulle have været "
Avatar billede jakoba Nybegynder
23. juni 2003 - 15:21 #33
fordi det du siger kan ikke passe
hvis linie 97 i den fil er der hvor du siger den er burde du have fået fejl i linie 90 før du lavede de rettelser.
Eftersom du siger du ikke fik det er der noget der er forkert i den information vi har.

Det er dog også mulig at der er en af rettelserne der er gået galt. den rettede linie skal være:
if (strlen($_POST[password])<6 || strlen($_POST[password]) >16)

sammenlign tegn for tegn, eller kopier evt din linie ind her så vi kan sammenligne.

mvh JakobA
Avatar billede ahv Nybegynder
23. juni 2003 - 15:23 #34
hoejgaard -> Se havde du nu bare postet dit script og sagt hvor fejlen var. så mener jeg det havde været lettere istedet for at indæstte nogle lininer hist og her for at vise hvor det er, men godt fejlen bleve rettet :o).

Nu er den fejl jo oven over det jeg rettede, men det jeg rettede til havde med stor sandsynlighed givet dig en ny fejl.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:31 #35
jeg har lige en ting til. den skriver nu følgende :



brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.
Og der er IKKE fordi det er optaget !!
Men der er nok en fejl i min result, hvordan er det man gør det. Her er koden der læser fra databasen


if ($_POST[brugernavn] && $_POST[password])
{
  $db = mysql_connect("localhost","root");
    mysql_select_db("registrering",$db);
 

$query = "select * from kunde
                    where brugernavn = '$_POST[brugernavn]' and
                              password = '$_POST[password]'";
   
    $result = mysql_query($query);
    if($result)
{
      echo "brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.";
      exit;
}
}
Avatar billede jakoba Nybegynder
23. juni 2003 - 15:32 #36
ahv >> det havde *helt sikkert* gevet fejl
Avatar billede ahv Nybegynder
23. juni 2003 - 15:33 #37
$query = mysql_query("select * from kunde where brugernavn = '$_POST[brugernavn]' and password = '$_POST[password]'");
$result = mysql_fetch_array($query);
if($result)
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:34 #38
det er det med at sammenligne, jeg ikke lige ved hvordan man gør ???
Avatar billede jakoba Nybegynder
23. juni 2003 - 15:34 #39
du får et resultatsæt hvadenten der er 0 eller 1 rækker fyldt i det.
    if( mysql_num_rows($result) > 0 )  // mysql_num_rows fortæller hvormange rækker
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:36 #40
ahv, vil det du skrev der, betyde at den går ind og sammenligner det netop indtastede med hvad der allerede er i tabellen ??
Avatar billede ahv Nybegynder
23. juni 2003 - 15:36 #41
Ja det vil det.
Avatar billede ahv Nybegynder
23. juni 2003 - 15:38 #42
$query = mysql_query("SELECT COUNT(*) FROM kunde WHERE brugernavn = '$_POST[brugernavn]' AND password = '$_POST[password]'");
$row = mysql_fetch_array($query);
if ($row['0'] == 0) {
      echo "brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.";
      exit;
}
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:40 #43
dvs at når man skriver feks : brugernavn = '$_POST[brugernavn]'
så tager det indtastede bruger navn som er $_POST[brugernavn]og holder op imod brugernavn som ligger i tabellen "kunde" og hvis
brugernavn = '$_POST[brugernavn] så er der et match ????
Avatar billede ahv Nybegynder
23. juni 2003 - 15:41 #44
Ja, vi skal jo kun teste brugernavnet ikke kodeordet ;o) To brugere kan jo gost have samme kode ->

$query = mysql_query("SELECT COUNT(*) FROM kunde WHERE brugernavn = '$_POST[brugernavn]'");
$row = mysql_fetch_array($query);
if ($row['0'] == 0) {
      echo "brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.";
      exit;
}
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:42 #45
hvad gør den : if ($row['0'] == 0)
Avatar billede ahv Nybegynder
23. juni 2003 - 15:43 #46
$query = mysql_query("SELECT COUNT(*) FROM kunde WHERE brugernavn = '$_POST[brugernavn]'");
$row = mysql_fetch_array($query);
if ($row['0'] != 0) {
      echo "brugernavn og password er optaget. Gå tilbage og prøv en anden kombination.";
      exit;
}

Sådan det skal være != 0
Så hvis den nu havde været 0 havde der ikke været nogen.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:45 #47
dvs row er et array og row['0'] er den første værdi, og hvis den er 0 så er der ikke nogen forekomster ??
Avatar billede ahv Nybegynder
23. juni 2003 - 15:47 #48
Ja.
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:48 #49
perfekt afprøver det lige....
Avatar billede hoejgaard Juniormester
23. juni 2003 - 15:52 #50
dejligt det virker. Ved sku ikke hvad jeg skulle gøre hvis der ikke fandtes nogle som ahv og erik jacobsen og jacoba og hvad de nu ellers hedder herinde. Det er en super hjælp. TAK
Avatar billede Slettet bruger
24. juni 2003 - 03:34 #51
Det er godt at kunne få kompetent hjælp, ja.

Men til en anden gang, find selv dine syntax fejl.
Det andet er sku for slapt - og spild af alles tid.
Avatar billede dknsj Nybegynder
24. juni 2003 - 20:31 #52
prøv sådan her ;
$query = "select * from kunde
                    where brugernavn = '$_POST[brugernavn]' and
                              password = '$_POST[password]' order by id;
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