Avatar billede fire-fox Nybegynder
20. februar 2008 - 11:13 Der er 9 kommentarer og
1 løsning

ession_start() hvorfor

nogen gange får jeg en fejl ang session_start()

linie : 7 i program.php
<?
include ("inc/online.php");
require("inc/calender.php");
require("./lang/lang." . LANGUAGE_CODE . ".php");
require("functions.php");
?>
<style type="text/css">
<!--
body,td,th {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
    color: #000000;
}
body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
}
a:link {
    color: #ACABAB;
    text-decoration: none;
}
a:visited {
    color: #ACABAB;
    text-decoration: none;
}
a:hover {
    color: #E84001;
    text-decoration: none;
}
a:active {
    color: #E84001;
    text-decoration: none;
}
.style2 {font-weight: bold}
.style3 {
    color: #ED4400;
    font-weight: bold;
}
-->
</style>
<?
# testing whether var set necessary to suppress notices when E_NOTICES on

$month =
    (isset($_GET['month'])) ? (int) $_GET['month'] : null;
$year =
    (isset($_GET['year'])) ? (int) $_GET['year'] : null;

# set month and year to present if month
# and year not received from query string

$m = (!$month) ? date("n") : $month;
$y = (!$year)  ? date("Y") : $year;

$scrollarrows = scrollArrows($m, $y);
$auth           = auth();

require("./templates/" . TEMPLATE_NAME . ".php");
?>

som så også melder fejl i

Linie: 8 functions.php

<?php
/*******************************************************
* functions.php -
*    phpEventCalendar global include file
*******************************************************/
function auth($login = '', $passwd = '')
{
    session_start();
    $auth    = 0;
    $register = false;
    $authdata = null;
   
    if (isset($_SESSION['authdata'])) {
        $authdata = $_SESSION['authdata'];
    }
   
    # return false if login neither passed to func, nor in session
    if (empty($login) && empty($authdata['login'])) {
        return 0;
    }

    # get login passed to function
    if (!empty($login)) {
        $username = $login;
        $pw      = $passwd;
        $register = true;
    } else {
        $username = $authdata['login'];
        $pw      = $authdata['password'];
    }
   
    mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
   
    $sql = "
        SELECT * FROM " . DB_TABLE_PREFIX . "users
        WHERE username = '" . $username . "'";
    $result = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($result);
   
    # validate login, and register session data if appropriate
    if ( $pw == $row["password"] ) {
        $auth = $row['userlevel'];

        if ($register) {
            $_SESSION['authdata'] = array(
                'login'    => $row['username'],
                'password'  => $row['password'],
                'userlevel' => $row['userlevel'],
                'uid'      => $row['uid'],
            );
        }
    } else {
        # if passwords didn't match, delete authdata session data
        unset($_SESSION['authdata']);
    }
      return $auth;
}
Avatar billede leif Seniormester
20. februar 2008 - 11:21 #1
Der må ikke være udskrevet nogen former for HTML før session_start();
Avatar billede fire-fox Nybegynder
20. februar 2008 - 11:37 #2
hmm ja vidste jeg endelig godt :) men hordan klar jeg så det med style da det eller ikke ser pænt ud :)
Avatar billede rax Praktikant
20. februar 2008 - 12:56 #3
du lægger dit kald til session_start() i starten af en fil, som du inkluderer på alle dine sider som den første fil.. så er du sikker på, at du får kaldt session_start() inden du sender noget output :)
må jeg ikke også anbefale dig at lægge dit stylesheet eksternt, og henvise til det med <link rel="stylesheet" href="(url)" /> .. det bliver du glad for i længden :)

har du flere spørgsmål, spørger du bare :)
Avatar billede fire-fox Nybegynder
20. februar 2008 - 13:06 #4
Du må anbefalde det du vil... vil gerne have det så simpelt som overhovedet muligt :D er det noget du kunne hjælpe med xD
Avatar billede fire-fox Nybegynder
20. februar 2008 - 13:09 #5
nu har jeg prøvet at gøre følgende :

program.php
-----------
<?
require("functions.php");  <--- flyttet den her op (var under require("./lang/lang." . LANGUAGE_CODE . ".php"); før)
require("inc/calender.php");
require("./lang/lang." . LANGUAGE_CODE . ".php");

# testing whether var set necessary to suppress notices when E_NOTICES on

$month =
    (isset($_GET['month'])) ? (int) $_GET['month'] : null;
$year =
    (isset($_GET['year'])) ? (int) $_GET['year'] : null;

# set month and year to present if month
# and year not received from query string

$m = (!$month) ? date("n") : $month;
$y = (!$year)  ? date("Y") : $year;

$scrollarrows = scrollArrows($m, $y);
$auth           = auth();

require("./templates/" . TEMPLATE_NAME . ".php");
?>

for som jeg læser det så er der session_start(); på linie 8 i function.php.... så det må vel give den rette input inden noget andet bliver sendt ?
Avatar billede rax Praktikant
20. februar 2008 - 13:19 #6
men hvornår kalder du din funktion auth()? fordi det er først når du kalder den, at session_start() bliver kaldt. du kan roligt kalde session_start() idet siden loades, det er der ingen som bliver logget ind af.. hvis din auth() function først kaldes efter der er sendt output til browseren, så har du problemet ;)

det er let at lave et eksternt stylesheet.. du flytter bare hele dit stylesheet over i et dokument for sig selv, f.eks. style.css, og sletter <style> tagget, både start og slut. Så tilføjer du istedet et link til dette stylesheet i <head> sektionen på dit html-dokument, som jeg skrev før: <link rel="stylesheet" href="/style/style.css" /> (hvis vi antager, at dit stylesheet ligger i en mappe, som hedder style). Så har du din visuelle formatering samlet ét sted :)
Avatar billede fire-fox Nybegynder
20. februar 2008 - 14:24 #7
Her er min function.php værtfalde :

<?php
/*******************************************************
* functions.php -
*    phpEventCalendar global include file
*******************************************************/
function auth($login = '', $passwd = '')
{
    session_start();
    $auth    = 0;
    $register = false;
    $authdata = null;
   
    if (isset($_SESSION['authdata'])) {
        $authdata = $_SESSION['authdata'];
    }
   
    # return false if login neither passed to func, nor in session
    if (empty($login) && empty($authdata['login'])) {
        return 0;
    }

    # get login passed to function
    if (!empty($login)) {
        $username = $login;
        $pw      = $passwd;
        $register = true;
    } else {
        $username = $authdata['login'];
        $pw      = $authdata['password'];
    }
   
    mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
   
    $sql = "
        SELECT * FROM " . DB_TABLE_PREFIX . "users
        WHERE username = '" . $username . "'";
    $result = mysql_query($sql) or die(mysql_error());
    $row = mysql_fetch_assoc($result);
   
    # validate login, and register session data if appropriate
    if ( $pw == $row["password"] ) {
        $auth = $row['userlevel'];

        if ($register) {
            $_SESSION['authdata'] = array(
                'login'    => $row['username'],
                'password'  => $row['password'],
                'userlevel' => $row['userlevel'],
                'uid'      => $row['uid'],
            );
        }
    } else {
        # if passwords didn't match, delete authdata session data
        unset($_SESSION['authdata']);
    }
      return $auth;
}

# ###################################################################

function monthPullDown($month, $montharray)
{
    echo "<select name=\"month\">\n";

    $selected[$month - 1] = ' selected="selected"';

    for($i=0;$i < 12; $i++) {
        $val = $i + 1;
        $sel = (isset($selected[$i])) ? $selected[$i] : "";
        echo "    <option value=\"$val\"$sel>$montharray[$i]</option>\n";
    }
    echo "</select>\n\n";
}

# ###################################################################

function yearPullDown($year)
{
    echo "<select name=\"year\">\n";

    $selected[$year] = ' selected="selected"';
    $years_before_and_after = 3;
    $start_year = $year - $years_before_and_after;
    $end_year  = $year + $years_before_and_after;

    for($i=$start_year;$i <= $end_year; $i++) {
        $sel = (isset($selected[$i])) ? $selected[$i] : "";
        echo "    <option value=\"$i\"$sel>$i</option>\n";
    }
    echo "</select>\n\n";
}

# ###################################################################

function dayPullDown($day)
{
    echo "<select name=\"day\">\n";

    $selected[$day] = ' selected="selected"';

    for($i=1;$i <= 31; $i++) {
        $sel = (isset($selected[$i])) ? $selected[$i] : "";
        echo "    <option value=\"$i\"$sel>$i</option>\n";
    }
    echo "</select>\n\n";
}

# ###################################################################

function hourPullDown($hour, $namepre)
{
    echo "\n<select name=\"" . $namepre . "_hour\">\n";
   
    $selected[$hour] = ' selected="selected"';

    for($i=0;$i <= 12; $i++) {
        $sel = (isset($selected[$i])) ? $selected[$i] : "";
        echo "    <option value=\"$i\"$sel>$i</option>\n";
    }
    echo "</select>\n\n";
}

# ###################################################################

function minPullDown($min, $namepre)
{
    echo "\n<select name=\"" . $namepre . "_min\">\n";
   
    $selected[$min] = ' selected="selected"';

    for($i=0;$i < 60; $i+=5) {
        $disp_min = sprintf("%02d", $i);
        $sel = (isset($selected[$i])) ? $selected[$i] : "";
        echo "\t<option value=\"$i\"$sel>$disp_min</option>\n";
    }

    echo "</select>\n\n";
}

# ###################################################################

function amPmPullDown($pm, $namepre)
{
    $sel = ' selected="selected"';
    $am  = null;
    if ($pm) { $pm = $sel; } else { $am = $sel; }

    echo "\n<select name=\"" . $namepre . "_am_pm\">\n";
    echo "    <option value=\"0\"$am>am</option>\n";
    echo "    <option value=\"1\"$pm>pm</option>\n";
    echo "</select>\n\n";
}

# ###################################################################

function javaScript()
{
?>
    <script language="javascript">
    function submitMonthYear() {
        document.monthYear.method = "post";
        document.monthYear.action =
            "program.php?month=" + document.monthYear.month.value +
            "&year=" + document.monthYear.year.value;
        document.monthYear.submit();
    }
   
    function postMessage(day, month, year) {
        eval(
        "page" + day + " = window.open('eventform.php?d=" + day + "&m=" +
        month + "&y=" + year + "', 'postScreen', 'toolbar=0,scrollbars=1," +
        "location=0,statusbar=0,menubar=0,resizable=1,width=340,height=400');"
        );
    }
   
    function openPosting(pId) {
        eval(
        "page" + pId + " = window.open('eventdisplay.php?id=" + pId +
        "', 'mssgDisplay', 'toolbar=0,scrollbars=1,location=0,statusbar=0," +
        "menubar=0,resizable=1,width=340,height=400');"
        );
    }
   
    function loginPop(month, year) {
        eval("logpage = window.open('login.php?month=" + month + "&year=" +
        year + "', 'mssgDisplay', 'toolbar=0,scrollbars=1,location=0," +
        "statusbar=0,menubar=0,resizable=1,width=340,height=400');"
        );
    }
    </script>
<?php
}

# ###################################################################

function footprint($auth, $m, $y)
{
    global $lang;

    echo "
    <br><span class=\"footprint\">
    <span style=\"color: #666\"></span> [ ";
   
    if ( $auth == 2 ) {
        echo "
        <a href=\"useradmin.php\">" . $lang['adminlnk'] . "</a> |
        <a href=\"login.php?action=logout&month=$m&year=$y\">"
        . $lang['logout'] . "</a>";
    } elseif ( $auth == 1 ) {
        echo "
        <a href=\"useradmin.php?flag=changepw\">" . $lang['changepw'] . "</a> |
        <a href=\"login.php?action=logout&month=$m&year=$y\">"
        . $lang['logout'] . " </a>";
    } else {
        echo "<a href=\"java script:loginPop($m, $y)\">"
        . $lang['login'] . "</a>";
    }
    echo " ]</span>";
}

# ###################################################################

function scrollArrows($m, $y)
{
    // set variables for month scrolling
    $nextyear  = ($m != 12) ? $y : $y + 1;
    $prevyear  = ($m != 1)  ? $y : $y - 1;
    $prevmonth = ($m == 1)  ? 12 : $m - 1;
    $nextmonth = ($m == 12) ? 1  : $m + 1;

    return "
    <a href=\"program.php?month=" . $prevmonth . "&year=" . $prevyear . "\">
    <img src=\"images/leftArrow.gif\" border=\"0\"></a>
    <a href=\"program.php?month=" . $nextmonth . "&year=" . $nextyear . "\">
    <img src=\"images/rightArrow.gif\" border=\"0\"></a>
    ";
}

# ###################################################################

function writeCalendar($month, $year)
{
    $str = getDayNameHeader();
    $eventdata = getEventDataArray($month, $year);

    # get first row position of first day of month.
    $weekpos = getFirstDayOfMonthPosition($month, $year);

    # get user permission level
    $auth = (isset($_SESSION['authdata']))
        ? $_SESSION['authdata']['userlevel']
        : false;

    # get number of days in month
    $days = date("t", mktime(0,0,0,$month,1,$year));

    # initialize day variable to zero, unless $weekpos is zero
    if ($weekpos == 0) $day = 1; else $day = 0;
   
    # initialize today's date variables for color change
    $timestamp = mktime() + CURR_TIME_OFFSET * 3600;
    $d = date('j', $timestamp);
    $m = date('n', $timestamp);
    $y = date('Y', $timestamp);

    # lookup for testing whether day is today
    $today["$y-$m-$d"] = 1;

    # loop writes empty cells until it reaches position of 1st day of
    # month ($wPos).  It writes the days, then fills the last row with empty
    # cells after last day
    while($day <= $days) {
        $str .="<tr>\n";
       
        # write row
        for($i=0;$i < 7; $i++) {
            # if cell is a day of month
            if($day > 0 && $day <= $days) {
                # set css class today if cell represents current date
                $class = (isset($today["$year-$month-$day"])) ? 'today' : 'day';

                $str .= "
                <td class=\"{$class}_cell\" valign=\"top\">
                <span class=\"day_number\">\n";
               
                if ($auth) {
                    $str .= "
                    <a href=\"java script: postMessage($day, $month, $year)\">
                    $day</a>";
                } else {
                    $str .= "$day";
                }   
                $str .= "</span><br>";
               
                if (isset($eventdata[$day]["title"])) {
                    // enforce title limit
                    $eventcount = count($eventdata[$day]["title"]);
   
                    if (MAX_TITLES_DISPLAYED < $eventcount) {
                        $eventcount = MAX_TITLES_DISPLAYED;
                    }
                   
                    // write title link if day's postings
                    for($j=0;$j < $eventcount;$j++) {
                        $str .= "
                        <span class=\"title_txt\">
                        -<a href=\"java script:openPosting("
                        . $eventdata[$day]["id"][$j] . ")\">"
                        . $eventdata[$day]["title"][$j] . "</a></span>"
                        . $eventdata[$day]["timestr"][$j];
                    }
                }

                $str .= "</td>\n";
                $day++;
            } elseif($day == 0)  {
                $str .= "
                <td class=\"empty_day_cell\" valign=\"top\">&nbsp;</td>\n";
                $weekpos--;
                if ($weekpos == 0) $day++;
            } else {
                $str .= "
                <td class=\"empty_day_cell\" valign=\"top\">&nbsp;</td>\n";
            }
        }
        $str .= "</tr>\n\n";
    }
    $str .= "</table>\n\n";
    return $str;
}

# ###################################################################

function getDayNameHeader()
{
    global $lang;

    // adjust day name order if weekstart not Sunday
    if (WEEK_START != 0) {
        for($i=0; $i < WEEK_START; $i++) {
            $tempday = array_shift($lang['abrvdays']);
            array_push($lang['abrvdays'], $tempday);
        }
    }

    $s = "<table cellpadding=\"1\" cellspacing=\"1\" border=\"0\">\n<tr>\n";

    foreach($lang['abrvdays'] as $day) {
        $s .= "\t<td class=\"column_header\">&nbsp;$day</td>\n";
    }

    $s .= "</tr>\n\n";
    return $s;
}

# ###################################################################

function getEventDataArray($month, $year)
{
    $eventdata = null;
    mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error());
    mysql_select_db(DB_NAME) or die(mysql_error());
   
    $sql = "SELECT id, d, title, start_time, end_time, ";
   
    if (TIME_DISPLAY_FORMAT == "12hr") {
        $sql .= "TIME_FORMAT(start_time, '%l:%i%p') AS stime, ";
        $sql .= "TIME_FORMAT(end_time, '%l:%i%p') AS etime ";
    } elseif (TIME_DISPLAY_FORMAT == "24hr") {
        $sql .= "TIME_FORMAT(start_time, '%H:%i') AS stime, ";
        $sql .= "TIME_FORMAT(end_time, '%H:%i') AS etime ";
    } else {
        echo "Bad time display format, check your configuration file.";
    }
   
    $sql .= "
        FROM " . DB_TABLE_PREFIX . "mssgs WHERE m = $month AND y = $year
        ORDER BY start_time";
   
    $result = mysql_query($sql) or die(mysql_error());
   
    while($row = mysql_fetch_assoc($result)) {
        $day = $row["d"];
        $eventdata[$day]["id"][] = $row["id"];

        # set title string; limit char length and append ellipsis if necessary
        $title = stripslashes($row["title"]);
        $eventdata[$day]["title"][] = (strlen($title) > TITLE_CHAR_LIMIT)
            ? substr($title, 0, TITLE_CHAR_LIMIT) . '...'
            : $title;
       
        # set time string
        if (!($row["start_time"] == "55:55:55"
            && $row["end_time"] == "55:55:55")) {
            $starttime
                = ($row["start_time"] == "55:55:55") ? "- -" : $row["stime"];
            $endtime
                = ($row["end_time"] == "55:55:55") ? "- -" : $row["etime"];
           
            $timestr = "
            <div align=\"right\" class=\"time_str\">
            ($starttime - $endtime)&nbsp;</div>\n";
        } else {
            $timestr = "<br />";
        }
        $eventdata[$day]["timestr"][] = $timestr;
    }
    return $eventdata;
}

# ###################################################################

function getFirstDayOfMonthPosition($month, $year)
{
    $weekpos = date("w", mktime(0,0,0,$month,1,$year));

    // adjust position if weekstart not Sunday
    if (WEEK_START != 0) {
        if ($weekpos < WEEK_START) {
            $weekpos = $weekpos + 7 - WEEK_START;
        } else {
            $weekpos = $weekpos - WEEK_START;
        }
    }
    return $weekpos;
}

# ###################################################################

?>
Avatar billede rax Praktikant
20. februar 2008 - 14:30 #8
spørgsmålet er, hvornår du kalder auth($login, $password).. fordi først dér bliver session_start() afviklet.
Avatar billede fire-fox Nybegynder
20. februar 2008 - 17:34 #9
jeg takker for hjælpen, tror jeg fandt ud det :)
Avatar billede rax Praktikant
20. februar 2008 - 21:46 #10
det var så lidt :)
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