Avatar billede cronaldo Nybegynder
05. august 2009 - 01:51 Der er 14 kommentarer og
1 løsning

Syntax error, der har gemt sig!

Jeg får flg. fejl:
Parse error: syntax error, unexpected '}' in /customers/getaroom.dk/getaroom.dk/httpd.www/_site_admin/_users/_edit.php on line 9


--------------------------------------

<?php
class editUser {
    public function checkFormDataLejer(){
        $fejlmeddelelse = "";
        if( empty($_POST['newmail']) || !eregi('^[a-z0-9][_\.a-z0-9-]*@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,6}$)',$_POST['newmail']))
        {
            if( !empty($fejlmeddelelse) ){ 
                // $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Mail";
        }
        if( empty($_POST['newfirstname']) )
        {
            if(!empty($fejlmeddelelse))
            { 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Fornavn";
        }
        if( empty($_POST['newlastname']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Efternavn";
        }
        if( empty($_POST['newadress']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Adresse (Personlige oplysninger)";
        }
        if( empty($_POST['newpostalcode']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Postnummer (Personlige oplysninger)";
        }
        if( empty($_POST['newcity']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet By (Personlige oplysninger)";
        }
        if( empty($_POST['newkontotype']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Kontotype";
        }
        if( empty($_POST['newniveau']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Niveau";
        }
        if( empty($_POST['newban']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Banned";
        }
       
        if( !empty($fejlmeddelelse) AND isset($fejlmeddelelse) ){
            $fejlmeddelelse = '
    <table style="width:99%;">
        <tr>
            <td>
                <div class="error_message" style="text-align:left;"><b>Fejl!</b><br />Du har ikke udfyldt alle felter korrekt!'.$fejlmeddelelse.
                '</div>
            </td>
        </tr>
    </table>';
            return $fejlmeddelelse;
        } else {
            return false;
        }
    }
   
    public function checkFormDataVirk (){
        if( empty($_POST['newmail']) OR !eregi("^[a-z0-9][_\.a-z0-9-]*@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,6}$)",$_POST['mail']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Mail";
        }
        if( empty($_POST['newfirstname']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Fornavn";
        }
        if( empty($_POST['newlastname']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Efternavn";
        }
        if( empty($_POST['newadress']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Adresse (Personlige oplysninger)";
        }
        if( empty($_POST['newpostalcode']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Postnummer (Personlige oplysninger)";
        }
        if( empty($_POST['newcity']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet By (Personlige oplysninger)";
        }
        if( empty($_POST['newvirknavn']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Virksomhedsnavn";
        }
        if( empty($_POST['newvirkadress']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Virksomhedsadresse";
        }
        if( empty($_POST['newvirkpostalcode']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Postnummer (Virksomhedsoplysninger)";
        }
        if( empty($_POST['newvirkcity']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet By (Virksomhedsoplysninger)";
        }
        if( empty($_POST['newkontotype']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Kontotype";
        }
        if( empty($_POST['newniveau']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Niveau";
        }
        if( empty($_POST['newban']) ){
            if(!empty($fejlmeddelelse)){ 
                $fejlmeddelelse .= "<br />";
            }
            $fejlmeddelelse .= "- Feltet Banned";
        }
       
        if( !empty($fejlmeddelelse) AND isset($fejlmeddelelse) ){
            $fejlmeddelelse = '
    <table style="width:99%;">
        <tr>
            <td>
                <div class="error_message" style="text-align:left;"><b>Fejl!</b><br />Du har ikke udfyldt alle felter korrekt!'.$fejlmeddelelse.
                '</div>
            </td>
        </tr>
    </table>';
            return $fejlmeddelelse;
        } else {
            return false;
        }
    }
   
    public function editFormData($userID){
        mysql_query("    UPDATE login
                        SET
                            brugernavn             = '".$_POST['newbrugernavn']."'
                            mail                 = '".$_POST['newbrugernavn']."'
                            firstname            = '".$_POST['newbrugernavn']."'
                            lastname             = '".$_POST['newbrugernavn']."'
                            adress                = '".$_POST['newbrugernavn']."'
                            postalcode             = '".$_POST['newbrugernavn']."'
                            city                 = '".$_POST['newbrugernavn']."'
                            phoneprivate         = '".$_POST['newphonenr']."'
                            mbprivate            = '".$_POST['newcellprivate']."'
                            mbwork                = '".$_POST['newcellwork']."'
                            virksomhedsnavn        = '".$_POST['newvirknavn']."'
                            virkadresse            = '".$_POST['newvirkadress']."'
                            virkpostnr            = '".$_POST['newvirkcity']."'
                            virkcity            = '".$_POST['newvirkpostalcode']."'
                            kontotype            = '".$_POST['newkontotype']."'
                            niveau                = '".$_POST['newniveau']."'
                            banned                = '".$_POST['newban']."'
                        WHERE id = '".$userID."' 
                        LIMIT 1");
    }
}

(script fortsættes, men tror ikke fejlen er længere nede end dette!....)
Avatar billede arne_v Ekspert
05. august 2009 - 03:08 #1
if( !empty($fejlmeddelelse) ){
                // $fejlmeddelelse .= "<br />";
            } <------------------------------------ er det her _edit.php linie 9 ?
Avatar billede skau Nybegynder
05. august 2009 - 06:16 #2
Mit gæt ville være at din ' står på den forkerte side af parantesen

if( empty($_POST['newmail']) || !eregi('^[a-z0-9][_\.a-z0-9-]*@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,6}$)',$_POST['newmail']))

burde være

if( empty($_POST['newmail']) || !eregi('^[a-z0-9][_\.a-z0-9-]*@([a-z0-9][0-9a-z-]+\.)+([a-z]{2,6}$'),$_POST['newmail']))
Avatar billede j4k0b Nybegynder
05. august 2009 - 08:25 #3
Denne funktion er ikke for heldig: editFormData

Alle og enhver kan uden videre udnytte din direkte brug af $_FORM data i en SQL forespørgsel til at lave SQL injections

http://en.wikipedia.org/wiki/SQL_injection
Avatar billede cronaldo Nybegynder
05. august 2009 - 11:32 #4
Hej j4k0b!

Hvordan skal jeg sikre mig mod dette?? :)
Avatar billede cronaldo Nybegynder
05. august 2009 - 11:34 #5
Skau: Nej, for parantesen afsluttes jo først efter jeg har angivet hvilken data der skal tjekkes..
arne_v: Ja, det er den linje! :)
Avatar billede skau Nybegynder
05. august 2009 - 19:10 #6
ja men din reg expr er jo den du vil indkapsle i ' ', har du prøvet - for du starter med en ' som det første i parantesen og har parantes slut inden ' hvilket dermed indgår i din expr hvilket jeg ikke regner med er meningen

Bare et gæt
Avatar billede cronaldo Nybegynder
07. august 2009 - 01:02 #7
Hej, skau:

kan du ikke prøve at skrive hvordan, for jeg ved det ikke?
Jeg har umiddelbart prøvet og det virkede ikke! :)
Avatar billede skau Nybegynder
07. august 2009 - 21:49 #8
hmm - jeg er nok forkert på den, ved nærmere eftersyn ser den ok ud.

Men hvad sker der hvis du skifter linie 8 :
// $fejlmeddelelse .= "<br />";

ud med en linie der gør noget - således du ike har en tom action del i din if, feks bare med en tildeling:
$banjo="banjo";

Du har jo udkommenteret din $fejlbesked og dermed er der ikke noget imellem { og }
Avatar billede cronaldo Nybegynder
07. august 2009 - 23:29 #9
Jeg har prøvet at fjerne det, og det giver intet resultat :)
Avatar billede cronaldo Nybegynder
07. august 2009 - 23:45 #10
Jeg har prøvet at debugge, og hvis jeg fjerner:

if( !empty($fejlmeddelelse) ){ 
                $fejlmeddelelse .= "<br />";
            }

Så rykker fejlen ned til næste if sætning - det er altså i denne sætning, at fejlen ligger! :)
Avatar billede cronaldo Nybegynder
08. august 2009 - 00:31 #11
Jeg fik debugget mig frem til, at ovenstående var problemet - hvorfor kan jeg ikke lige se, men det er nu rettet, og det virker nu upåklageligt :)
J4k0b: Jeg har ændret min mysql_query til flg., er det sikkert hvad angår sql_injections??
----------------------
KODE:
----------------------

mysql_query("    UPDATE login
                        SET
                            brugernavn             = '" .    mysql_real_escape_string($_POST['newbrugernavn'])        . "',
                            mail                 = '" .    mysql_real_escape_string($_POST['newmail'])                . "',
                            fornavn                = '" .    mysql_real_escape_string($_POST['newfirstname'])         . "',
                            efternavn             = '" .    mysql_real_escape_string($_POST['newlastname'])            . "',
                            adresse                = '" .    mysql_real_escape_string($_POST['newadress'])            . "',
                            postnr                = '" .    mysql_real_escape_string($_POST['newpostalcode'])        . "',
                            city                 = '" .    mysql_real_escape_string($_POST['newcity'])                . "',
                            phoneprivate         = '" .    mysql_real_escape_string($_POST['newphonenr'])            . "',
                            mbprivate            = '" .    mysql_real_escape_string($_POST['newcellprivate'])        . "',
                            mbwork                = '" .    mysql_real_escape_string($_POST['newcellwork'])            . "',
                            virksomhedsnavn        = '" .    mysql_real_escape_string($_POST['newvirknavn'])            . "',
                            virkadresse            = '" .    mysql_real_escape_string($_POST['newvirkadress'])        . "',
                            virkpostnr            = '" .    mysql_real_escape_string($_POST['newvirkpostalcode'])    . "',
                            virkcity            = '" .    mysql_real_escape_string($_POST['newvirkcity'])            . "',
                            brugertype            = '" .    mysql_real_escape_string($_POST['newkontotype'])        . "',
                            niveau                = '" .    mysql_real_escape_string($_POST['newniveau'])            . "',
                            banned                = '" .    mysql_real_escape_string($_POST['newban'])                . "'
                        WHERE id = '" .    mysql_real_escape_string($userID)    . "' 
                        LIMIT 1") or die(mysql_error());
Avatar billede j4k0b Nybegynder
08. august 2009 - 11:03 #12
Ja præcis.. Den burde du benytte alle steder du indsætter bruger-input i en SQL streng
Avatar billede skau Nybegynder
08. august 2009 - 18:33 #13
Jeg fik ikke lige fat i hvad du gjorde for at løse problemet med dine if, hjalp det der banjo eller hvad skulle der til ?
Avatar billede cronaldo Nybegynder
08. august 2009 - 20:26 #14
Til Skau:

Jeg slettede dette alle steder og så virkede det:


if( !empty($fejlmeddelelse) ){
                $fejlmeddelelse .= "<br />";
            }
Avatar billede cronaldo Nybegynder
02. december 2009 - 00:16 #15
lukker
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