Avatar billede chhoje Nybegynder
22. juli 2011 - 07:13 Der er 15 kommentarer

Header location problem

Hej.

sidder og er igang med at lave ny firma hjemmeside.

i forbindelse med det vil vi have lavet et bruger system.

siden hedder http://www.mxtryk.dk/mxtryk/

hvis jeg bruger login'et i venstre hjørne med

Brugernavn:test
password:test

så melder den om følgende fejl

Warning: Cannot modify header information - headers already sent by (output started at /usr/home/web/web276672/mxtryk.dk/mxtryk/index.php:19) in /usr/home/web/web276672/mxtryk.dk/mxtryk/user/login.php on line 16

filen er inkluderet fra user/login.php

men bruger jeg http://www.mxtryk.dk/mxtryk/user/login.php

som er den fil jeg inkluderer er der ingen problemer

hvis i prøver sidstnævnte siger den at den ikke kan finde siden da den jo er linket til /user/index.php . dvs den vil jo linke til http://www.mxtryk.dk/mxtryk/user/user/index.php og den eksistere jo ikke . men det skal den heller ikke da jeg jo skal kunne logge ind på forsiden.

Håber ikke i tror jeg mener i er dumme eller noget.

Har dog bare set mange der ikke uddyber deres spørgsmål derfor forklare jeg som jeg gør..

Mit login script som jeg inkludere ser således ud:

<?php
if(isset($_POST["submit"])){
   
    # Authenticating user
    $username = $_POST["username"];
    $password = $_POST["password"];
    $dbConn = mysql_connect($hostname_mxtryk,$username_mxtryk,$password_mxtryk);
    mysql_select_db($database_mxtryk, $dbConn);
    $sql = "SELECT * FROM mxtryk_users WHERE username='$username' AND password='$password'";
    $authenticateRs = mysql_query($sql, $dbConn) or die(mysql_error());
    $authenticateRow = mysql_fetch_assoc($authenticateRs);
    if($authenticateRow["id"]!=""){
        $_SESSION["id"] = $authenticateRow["id"];
        $_SESSION["username"] = $authenticateRow["username"];
        $_SESSION["password"] = $authenticateRow["password"];
        header("Location: user/index.php");
    }else{
        echo "<p class=\"noticered\">Du har indtastet forkerte oplysninger. Prøv igen</p>";
    }
    mysql_close($dbConn);
}
?>

        <div class="login-form">
            <form action="" method="post">
                <label>Brugernavn
                <span class="small">skriv dit brugernavn</span>
                </label>
                <input type="text" name="username" id="login-username" class="username" value="<?php echo $_POST["username"]; ?>" />
                <label>Adgangskode
                <span class="small">skriv din adgangskode</span>
                </label>
                <input type="password" name="password" class="password" value="<?php echo $_POST["password"]; ?>" /><br />
                <?php
                echo"<button name=\"submit\" value=\"Submit\" type=\"submit\">Log ind</button>";
                ?>
            </form>
        </div>
        <script type="text/javascript" src="jquery/jquery.functions.user.js"></script>
       

Håber en af jer kan hjælpe mig med at finde fejlen..

har søgt og søgt har læst om (bom) men kan ikke finde ud af hvordan jeg sætter dette op i dreamweaver som er det program jeg programmere i

Mvh christian
Avatar billede magic-mouse Novice
22. juli 2011 - 08:25 #1
Fra: http://php.net/manual/en/function.header.php

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

Dette betyder at ved header location må du ikke sende eks. Echo eller andet ligende. Det kan være det mellemrum som er mellem "if(isset($_POST["submit"])){" og "# Authenticating user" hvis du fjerener det skulle der være en god chance for at det virker.

OBS: Husk at sikre mod SQL injections. Det er forholdsvist let i PHP.
Avatar billede olsensweb.dk Ekspert
22. juli 2011 - 10:42 #2
en anden mulighed, kunne være du har gemt din fil med BOM
Avatar billede webweaver Praktikant
22. juli 2011 - 11:27 #3
Hvis du har HTML liggende omkring scriptet, <head></head><body> og så videre, og har outputtet noget (behøver ikke være PHP), vil du få denne fejl.

Ryk

<?php
if(isset($_POST["submit"])){
   
    # Authenticating user
    $username = $_POST["username"];
    $password = $_POST["password"];
    $dbConn = mysql_connect($hostname_mxtryk,$username_mxtryk,$password_mxtryk);
    mysql_select_db($database_mxtryk, $dbConn);
    $sql = "SELECT * FROM mxtryk_users WHERE username='$username' AND password='$password'";
    $authenticateRs = mysql_query($sql, $dbConn) or die(mysql_error());
    $authenticateRow = mysql_fetch_assoc($authenticateRs);
    if($authenticateRow["id"]!=""){
        $_SESSION["id"] = $authenticateRow["id"];
        $_SESSION["username"] = $authenticateRow["username"];
        $_SESSION["password"] = $authenticateRow["password"];
        header("Location: user/index.php");
    }else{
        echo "<p class=\"noticered\">Du har indtastet forkerte oplysninger. Prøv igen</p>"; // Laves til variabel og vises nede i body ....
    }
    mysql_close($dbConn);
}
?>


op i toppen af din fil.
Avatar billede kjeldsted Novice
22. juli 2011 - 11:28 #4
#1: Sludder.

Alt mellem <? og ?> må ikke udskrives medmindre der er en echo() print() el.lign. Og så længe der ikke er dét, ligger problemet nok et andet sted. Og ronols har måske fat i noget af det rigtige. Der kunne ligge noget dér som PHP ikke kan lide.
Avatar billede olsensweb.dk Ekspert
22. juli 2011 - 12:17 #5
#0 har søgt og søgt har læst om (bom) men kan ikke finde ud af hvordan jeg sætter dette op i dreamweaver som er det program jeg programmere i
prøv at læse http://www.adobe.com/support/documentation/en/dreamweaver/mx2004/dwusing_errata/dwusing_errata2.html
hvis det ikke giver noget kan du prøve at google "dreamweaver bom cs4"  http://www.google.dk/search?q=dreamweaver+bom+cs4 hvis det er cs4 du anvender
http://help.adobe.com/en_US/Dreamweaver/10.0_Using/WSc78c5058ca073340dcda9110b1f693f21-7ef8a.html

hvordan ser din index.php fil ud  (/web/web276672/mxtryk.dk/mxtryk/index.php:19) )  ??  specielt omkring linje 19 er interessant

en validering af din side vil også være en god ide, det vil iøvrigt også melde om nogle BOM fejl
http://validator.w3.org/check?uri=http%3A%2F%2Fwww.mxtryk.dk%2Fmxtryk%2Findex.php&charset=%28detect+automatically%29&doctype=Inline&group=0
start med at rette dit tegnsæt.
<meta http-equiv="Content-Type" content="text/html; charset=iso-5988-1" />
findes ikke
Avatar billede magic-mouse Novice
22. juli 2011 - 13:49 #6
#4 det er ikke noget sludder. Det er et kendt problem i eks. OsCommerce.

http://forums.oscommerce.com/topic/156547-header-errors-please-help/ <-- her ser du et eksempel på tilsvarende problem. Hvor du kan fide løsnings forslaget
delete any whitespace b4 the first <?php and after the last ?> in the first file mentioned.


Hvis du søger på tilsvarende problemer på google vil du gentagende gange få forslaget om at fjerne white spaces og mellemrum i koden før header() kaldes. Det kan være at det ikke er fejlen i dette specifikke tilfælde men absolut et muligt løsnings forslag.
Avatar billede olebole Juniormester
22. juli 2011 - 18:52 #7
<ole>

#4 >> Undskyld, men det er rent børnelærdom, hvad magic-mouse skriver!

Er du i tvivl, så søg her i Ekspertens PHP kategori. Der ligger hundredevis af tråde, hvor årsagen til denne fejl netop var white-space udenfor PHP script tags. Alternativt kan du jo bare prøve det selv  =)

/mvh
</bole>
Avatar billede olebole Juniormester
22. juli 2011 - 18:55 #8
Sorry, jeg læste forkert!

magic-mouse >> white-space indenfor script tags giver ikke denne type fejl. Det, du henviser til, omtaler jo også white-space udenfor script tags  *o)
Avatar billede dr-data Nybegynder
22. juli 2011 - 20:56 #9
Hej chhoje

En google søgning bringer følgende 2 resultater mfl. frem

http://www.highdots.com/forums/macromedia-dreamweaver/remove-bom-dreamweaver-mx-146012.html

http://stackoverflow.com/questions/5378522/utf-8-without-bom

Det skulle vel ikke være ændret ret meget..

Hvis du ikke kan finde det i opsætningen, er der sikkert andre der kan svare hvis du skriver hvilken version af Dreamweaver du bruger :)

God Weekend til jer alle :)
Avatar billede olebole Juniormester
22. juli 2011 - 22:37 #10
<ole>

I CS versionerne - altså efter Adobe overtog MacroMedia - gemmes der som standard uden BOM. BOM kan vælges til og fra under Preferences:

*) Kald Preference dialogen frem med Ctrl+U
*) Gå til New Document under Category ude til venstre
*) Check/uncheck chockboxen Include Unicode Signature (BOM)

/mvh
</bole>
Avatar billede olebole Juniormester
22. juli 2011 - 22:39 #11
- det senere så berømte HTML27 element chockboxen *LoL*
Avatar billede webweaver Praktikant
23. juli 2011 - 03:07 #12
Haha :)
Avatar billede olebole Juniormester
23. juli 2011 - 03:46 #13

    <output type="chockbox" volume="478%" value="BOM">
Avatar billede chhoje Nybegynder
06. august 2011 - 06:09 #14
Mange tak for svarene!

Troede faktisk jeg havde slettet indlægget.

Jeg har. brugt javasctipt og brugt print som header og det virkede
Avatar billede webweaver Praktikant
06. august 2011 - 11:43 #15
Indlæg kan ikke slettes her ...

Godt, at du har fået det til at virke.

Hvis du har fået hjælp fra nogen som du kunne bruge, bed dem smide et svar. Ellers smid et selv og accepter det, så tråden kan lukkes.

Fortsat god weekend.
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