Avatar billede nbj1 Praktikant
17. juni 2007 - 10:01 Der er 95 kommentarer og
1 løsning

fejl i header

header vej ik som jeg gerne vil have den til :(
jeg har prøvet med :
header("Location:admin.php");
header(\"Location:admin.php\");
header("Location: http://www.side.dk/admin.php");
hvordan kan det ellers skrives så det virker ?
Avatar billede nbj1 Praktikant
17. juni 2007 - 10:02 #1
ik vej men  vil :)
Avatar billede erikjacobsen Ekspert
17. juni 2007 - 10:14 #2
Det er i hvert fald ikke forkert:

header("Location: http://www.side.dk/admin.php");
Avatar billede jensgram Nybegynder
17. juni 2007 - 10:24 #3
Du sender vel ikke NOGET SOM HELST output før du forsøger at sende din header?
Avatar billede nbj1 Praktikant
17. juni 2007 - 10:49 #4
lader til hvis jeg i admin undlader dette:
/*

    //authorized login check

    include("checklogin.php");

    if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized

    {

        //show authorization form

        header("Location: access_admin.php");

    }

*/
kommer jeg ind.
Avatar billede nbj1 Praktikant
17. juni 2007 - 10:52 #5
så hvor er $_session['log'] siden jeg ik for lov ?
Avatar billede nbj1 Praktikant
17. juni 2007 - 11:10 #6
forstår ik helt jensgram
Avatar billede nbj1 Praktikant
17. juni 2007 - 11:12 #7
du mener som session_start() ; hvis du mener dette, så gør jeg
Avatar billede nbj1 Praktikant
17. juni 2007 - 11:27 #8
det seer udtil alt falder tilbage på dette, som jeg kan se det
    //authorized access check



    if ((isset($_SESSION["log"]) && isset($_SESSION["pass"])) && (strcmp($_SESSION["log"], ADMIN_LOGIN) || strcmp($_SESSION["pass"], ADMIN_PASS)))

    {

        unset($_SESSION["log"]);

        unset($_SESSION["pass"]);

    }
Avatar billede erikjacobsen Ekspert
17. juni 2007 - 11:42 #9
Hvilken webserver afvikler du dit php på ?
Avatar billede nbj1 Praktikant
17. juni 2007 - 11:43 #10
linux
Avatar billede nbj1 Praktikant
17. juni 2007 - 11:46 #11
mener apache på en linux kerne :)
Avatar billede erikjacobsen Ekspert
17. juni 2007 - 12:28 #12
Ok - umiddelbart ikke noget galt ud fra det jeg kan se. Men du viser jo kun lidt af koden. Kan du lave et minimalt eksempel, der ikke virker?
Avatar billede jensgram Nybegynder
17. juni 2007 - 14:27 #13
nbj1 > Jeg mente bare, at header() selvfølgelig ikke vil virke, hvis du allerede er startet på responsens "body" (eg. med print, echo eller ren HTML).
Avatar billede nbj1 Praktikant
17. juni 2007 - 21:54 #14
eks eks.. hvad der sker er, at jeg har en menu login, skal vidre ind i admin delen, den tjekker så via koden se op kl 10.49.07 via hele filen se kl 11.27.41 om session er sat med md5 cryp er ok hvis ja for man adgang til admin delen.
der kommer ingen fejl meddelser den forbliver bare i login siden, da hvad jeg tror men er ikke sikker, at session ikke huskes, da som jeg skriver i det kl 10.49.07 hvis jeg udkommentere tjekket kommer jeg ind i admin delen.
Avatar billede nbj1 Praktikant
18. juni 2007 - 08:07 #15
lige et tillæg spøgsmål, include skrives det anderledes i linux ?
Avatar billede nbj1 Praktikant
18. juni 2007 - 08:25 #16
include var skrevet forkert men kan stadig ikke logge in, hvad med php.ini
hvis jeg laver en phpinfo can en af jer se om der er noget der står forkert ?
Avatar billede nbj1 Praktikant
18. juni 2007 - 08:51 #17
hvis jeg nu ændre rettighederne på bib session bevidst for at fremtvinge fejl, skriver den ud til skærmen at man i har rettigheder for at skrive til sessions, det er jo ok, men det der undre mig er, hvis man opdatere i browseren skriver den en ny session, skal den det ?
ville selv mene at den skulle beholde den samme session indtil man lukker webbrowseren, hvis jeg har ret, he ved jeg ikke om jeg har, men så ville det forklare mener jeg, at man ikke kan logge ind, fordi, når man logger ind, laver man vel en opdatering igen, ved ik om jeg er inde på noget af det rigtige ....
Avatar billede nbj1 Praktikant
18. juni 2007 - 08:55 #18
det der undre mig er, tidligere kørte scriptet fint, men var på en win2000 server med apache, nu flytter man det over på en linux, og så går det ged i det.
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 09:34 #19
Jeg tror ikke du får løst problemet her, uden at vise os koden.
Avatar billede nbj1 Praktikant
18. juni 2007 - 09:41 #20
vil da gerne vise koden, men er ikke sikker på hvor jeg skal starte.
men start er her
<?php

    ini_set("display_errors", "1");

//main admin module

function add_department($admin_dpt)
    //adds new $admin_dpt to departments list
{
    global $admin_departments;

    $i = 0;
    while ($i<count($admin_departments) && $admin_departments[$i]["sort_order"] < $admin_dpt["sort_order"]) $i++;
    for ($j=count($admin_departments)-1; $j>=$i; $j--)
        $admin_departments[$j+1] = $admin_departments[$j];
    $admin_departments[$i] = $admin_dpt;
}

    include("cfg/connect.inc.php");
    include("includes/database/mysql.php");
    include("cfg/general.inc.php");
    include("cfg/appearence.inc.php");
    include("cfg/functions.php");
    include("cfg/category_functions.php");
    include("cfg/language_list.php");

    session_start();

    //authorized login check
    include("checklogin.php");
    if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
    {
        //show authorization form
        header("Location: access_admin.php");
    }

    //logout?
    if (isset($_GET["logout"])) //logout
    {
        //show authorization form
        $_SESSION["log"] = "";
        $_SESSION["pass"] = "";
        unset($_SESSION["log"]);
        unset($_SESSION["pass"]);
        die("<script>window.location='access_admin.php';</script>");
    }

    //init Smarty
    require 'smarty/smarty.class.php';
    $smarty = new Smarty; //core smarty object
    $smarty_mail = new Smarty; //for e-mails

    if (!isset($_SESSION["current_language"]) ||
        $_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))
            $_SESSION["current_language"] = 0; //set default language

    if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))
        include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file
    else
    {
        die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");
    }


    //connect to database
    db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());
    db_select_db(DB_NAME) or die (db_error());

    //set Smarty include files dir
    $smarty->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/admin";
    $smarty_mail->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/mail";

    //get currency ISO 3 code
    $currency_iso_3 = (defined('CONF_CURRENCY_ISO3')) ? CONF_CURRENCY_ISO3 : "DK" ;
    $smarty->assign("currency_iso_3", $currency_iso_3);

    // several functions

    function mark_as_selected($a,$b) //required for excel import
    //returns " selected" if $a == $b
    {
        return !strcmp($a,$b) ? " selected" : "";

    } //mark_as_selected


    function get_NOTempty_elements_count($arr) //required for excel import
        //gets how many NOT NULL (not empty strings) elements are there in the $arr
    {
        $n = 0;
        for ($i=0;$i<count($arr);$i++)
            if (trim($arr[$i]) != "") $n++;
        return $n;
    } //get_NOTempty_elements_count


    //end of functions definition

    //define department and subdepartment
    if (!isset($_GET["dpt"]))
    {
        $dpt = isset($_POST["dpt"]) ? $_POST["dpt"] : "";
    }
    else $dpt = $_GET["dpt"];
    if (!isset($_GET["sub"]))
    {
        if (isset($_POST["sub"])) $sub = $_POST["sub"];
    }
    else $sub = $_GET["sub"];

    //define smarty template
    $smarty->assign("admin_main_content_template", "default.tpl.html");
    $smarty->assign("current_dpt", $dpt);

    //get new orders count
    $q = db_query("select count(*) from ".ORDERS_TABLE) or die (db_error());
    $n = db_fetch_row($q);
    $smarty->assign("new_orders_count", $n[0]);

    $admin_departments = array();

    // includes all .php files from includes/ dir
    $includes_dir = opendir("includes/admin");
    $file_count = 0;
    while ( ($inc_file = readdir($includes_dir)) != false )
        if (strstr($inc_file,".php"))
        {
            include("includes/admin/$inc_file");
            $file_count++;
        }

    if (isset($sub)) $smarty->assign("current_sub", $sub);

    $smarty->assign("admin_departments", $admin_departments);
    $smarty->assign("admin_departments_count", $file_count);

    //show Smarty output
    $smarty->display($lang_list[$_SESSION["current_language"]]->template_path."admin/index.tpl.html");

?>
Avatar billede nbj1 Praktikant
18. juni 2007 - 09:43 #21
access_admin.php:
<?php


    ini_set("display_errors", "1");

    //admin mode access file

    session_start();

    include("./cfg/connect.inc.php");

    if (isset($_POST["authorize"]))
    {
        if (!strcmp(base64_encode($_POST["login"]), ADMIN_LOGIN) && !strcmp(md5($_POST["password"]), ADMIN_PASS))
        { //login ok
            $_SESSION["log"] = ADMIN_LOGIN;
            $_SESSION["pass"] = ADMIN_PASS;
            //redirect to the admin interface
            header("Location: admin.php");
        }
        else $errorStr = "Invalid login and/or password";
    }

?>
<html>
<head>
<link rel=STYLESHEET href="style1.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Administrator login</title></head>
<body>
<center>

<?php
    if (isset($errorStr)) echo "<font color=red><b>$errorStr</b></font>";
?>

<form name="form1" method="post" action="access_admin.php">
    <table border="0" cellpadding="2" cellspacing="1" bgcolor="#333333">
      <tr bgcolor="#CCCCCC">
        <td colspan="2" align=center><h4>Administrator login</h4></td>
  </tr>
      <tr bgcolor="#FFFFFF">
        <td align="right">Login:</td>
        <td>
          <input type="text" name="login"<?php if (isset($_POST["login"])) echo ' value="'.$_POST["login"].'"';?>></td>
  </tr>
      <tr bgcolor="#FFFFFF">
        <td align="right">Password:</td>
        <td>
          <input type="password" name="password"></td>
  </tr>
</table>

    <p>
      <input type="hidden" name="authorize" value="1">
      <input type="submit" value="Login">
    </p>
  </form>
  <p><a href="index.php">Go to front-end...</a></p>
</center>
</body>
</html>
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 10:07 #22
Generelt: session_start();  øverst.
Avatar billede nbj1 Praktikant
18. juni 2007 - 13:05 #23
jo men det løser ligesom ik problemet
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 13:54 #24
Koden 17/06-2007 11:27:41 kommenterer du 18/06-2007 08:51:50, hvor du nævner noget med md5 som ikke står der. Det gør der til gengæld 18/06-2007 09:43:48. Og der står der så også noget med base64_encode.

Jeg er i tvivl om hvad for noget kode, du mener der har virket, og så hvad du har nu. Har du checket at du i det hele taget rammer admin.php på noget tidspunkt?

Ja, session_start() skriver du som det første - så skal vi ikke spekulere mere på det.
Avatar billede nbj1 Praktikant
18. juni 2007 - 17:04 #25
ja session_start() men for test, har en af jer et simpel script, for at se om den læser den session som er startet ?
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 17:26 #26
<?php print .... ?>  kan bruges til mange ting. Men undersøg om alle dine mærkelige test for brugernavn og password reelt bringer dig videre til admin.php
Avatar billede nbj1 Praktikant
18. juni 2007 - 17:33 #27
erik jeg ved det, roder i blinde da der ikke kommer nogen fejl på skærmen jeg kan forholde mig til, hvad der sker.. enten husker den ikke den cookie der bliver sat eller kan ikke læse den.
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 17:45 #28
Nå, ok. Lav en admin2.php med dette indhold:

<?php
  print_r($_SESSION);
?>

og udskift admin.php til admin2.php i dit login-script. Så kan du i hvert fald nemt se om du kommer videre. Hvis ikke, så brug masser af print til at se hvad dine variabler indeholder.
Avatar billede nbj1 Praktikant
18. juni 2007 - 18:10 #29
jeg har fundet udaf dette, er lige ved at tro hvis testen er rigtig men det kan du vel lige give dit besyv med:
dette er med strcmp

RANDOM PASSWORD: &#65533;4
GUESSED PASSWORD:
It took 0 tries and 4.1961669921875E-05 seconds

dette er ude strcmd :

RANDOM PASSWORD: &#65533;&#65533;
GUESSED PASSWORD: &#65533;&#65533;
It took 164702 tries and 4.2415668964386 seconds

men begge med md5

her er koden uden strcmd

$randpass = chr(rand()).chr(rand());
print "RANDOM PASSWORD: $randpass";
print "<br/>";
$password = md5("$randpass");
$guesswrd = "";
$tries = 0;
$start = microtime(true);
while($password != md5($guesswrd)){
$guesswrd = chr(rand()).chr(rand());
$tries+=1;
}
$end = microtime(true);
$time = $end-$start;
print "GUESSED PASSWORD: $guesswrd";
print "<br/>";
print "It took $tries tries and $time seconds";
?>
og så sætter jeg strcmd ind foran md5
Avatar billede nbj1 Praktikant
18. juni 2007 - 18:14 #30
en ting mere nu hvor jeg copy resultatet ind her, lave den om på tallene her på skærmen vises det som to firkanter men på eksperten som &#65533;&#65533;
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 18:38 #31
Hvad er det du prøver at gøre med brugernavn og password? Lad os sige brugernavn var "a" og password "b" - hvad skriver du så?
Avatar billede nbj1 Praktikant
18. juni 2007 - 18:40 #32
a og b :)
Avatar billede nbj1 Praktikant
18. juni 2007 - 18:44 #33
'YWRtaW4x' er bruger navn
'af277177237699beaf598628a6c60aef' er password crypteret :)
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 19:58 #34
Ja, og så skal jeg spørge om der er nogen grund til at "skjule" at brugernavnet er "admin1" ?
Avatar billede nbj1 Praktikant
18. juni 2007 - 20:04 #35
forkert gæt, og temmelig uvæsentlig for at, finde udaf hvad hvad der er galdt.
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 21:18 #36
Det er nu ikke noget gæt - Du skal som koden ser ud skrive "admin1" som bruger
Avatar billede nbj1 Praktikant
18. juni 2007 - 21:36 #37
ja og... jeg ved koden men kommer stadig ik ind. jeg kan lave hvilken som helst kode med brugernavn og password, hvis jeg skriver forkert kommer den med rød skrift og fortæller det, jeg tog kun det som et eksempel, da du spørger vad man skal skrive som bruger og pass hvis det er a og b hmmm kan ik se hvad det har med problemet at gøre
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 22:00 #38
Uden at sidde med koden på din server, skal det jo være gæt, helst kvalificeret, baseret på eksperimenter. Men interessant at høre, for første gang, at du rent faktisk får fejlen ud med rødt, når brugernavn/password ikke er korrekt. Så er det måske alligevel ikke der, vi skal kigge.

Men hvad om du så får kigget på forslaget 18/06-2007 17:45:55
Avatar billede nbj1 Praktikant
18. juni 2007 - 22:11 #39
ja det er nok mig der forklare mig for dårligt, undskyld for det, det nærmeste jeg skriver er den 17 at jeg ikke for fejlmeddelser når jeg prøver at logge ind, og mente nok jeg kan skrive en adgang rigtigt, men at jeg var sikker på det via en fejl meddelse hvis jeg skrev forkert, det har jeg ikke fortalt.
jeg prøver dit forslag.
Avatar billede nbj1 Praktikant
18. juni 2007 - 22:18 #40
resultat tom side
logger ind via login menu bliver sendt vidre til admin2.php men siden er blank
Avatar billede nbj1 Praktikant
18. juni 2007 - 22:20 #41
skal jeg ikke i admin2.php have session_start(); med ?
Avatar billede nbj1 Praktikant
18. juni 2007 - 22:22 #42
hvis ja står der Array() på siden
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 22:26 #43
Jo, nemlig, der skal stå session_start(); - det er beviset for, at på netop den server skal det være det.  Men den vil ikke udskrive "Array()" - læs lige det indlæg igen.
Avatar billede nbj1 Praktikant
18. juni 2007 - 22:35 #44
jammen har læst
skriver mit login om så nå jeg logger på istedet for gå i admin.php går i admin2.php
....
session_start();

    include("./cfg/connect.inc.php");

    if (isset($_POST["authorize"]))
    {
        if (!strcmp(base64_encode($_POST["login"]), ADMIN_LOGIN) && !strcmp(md5($_POST["password"]), ADMIN_PASS))
        { //login ok
            $_SESSION["log"] = ADMIN_LOGIN;
            $_SESSION["pass"] = ADMIN_PASS;
            //redirect to the admin interface
            header("Location: admin.php");  <--- admin2.php
.....

fil admin2.php:
..
session_start();
print_r($_SESSION);
....

resultat :  Array() udskrives
Avatar billede erikjacobsen Ekspert
18. juni 2007 - 22:55 #45
Den kan ikke kun skrive "Array()" hvis du 1) Bruger Apache under Linux 2) Skriver session_start() som det allerførste i begge php-filer.
Avatar billede nbj1 Praktikant
18. juni 2007 - 23:39 #46
jammen det gør den alså erik
men hvis jeg laver en base64_decode af bruger for jeg fint navnet ud, men på password skriver den noget vulapyg ud ??????????
Avatar billede nbj1 Praktikant
19. juni 2007 - 00:23 #47
erik har det noget at sige hvilken Unicode man bruger UTF-8 det kender jeg ik så meget til.
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 08:44 #48
Nej, det har intet med det at gøre. Kan du vise koden? Kan du lave et minimalt eksempel?
Avatar billede nbj1 Praktikant
19. juni 2007 - 08:48 #49
eks af hvilken kode ?
det med base64decode eller admin2
Avatar billede nbj1 Praktikant
19. juni 2007 - 09:51 #50
det der sker når man laver et login, bliver navnet encode med base64 og
password bliver lavet med md5
og det virker som fint nok, det der et eller andet sted går galt er decodening af enten password eller bruger, med mine test decode af bruger skriver den fint nok navn ud, jeg er så ik helt sikker på decode af md5 om jeg har det rigtigt.
det tyder ikke på at pass er encode med base64 men kun med md5.
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 10:21 #51
Hvis du kommer til admin.php eller admin2.php, så virker brugernavn og password, og vi behøver ikke kigge mere på det (i hvert fald ikke for funktionaliteten  ... du laver en masse besvær uden at opnå større sikkerhed, som det er nu, men det er en helt anden ting)

Koden? Det betyder alle linier i alle relevante filer. Ja, det er meget. Det er også derfor jeg foreslår at du laver et minimalt eksempel. Du har allerede admin2.php
Avatar billede nbj1 Praktikant
19. juni 2007 - 10:26 #52
enig i at brugernavn og password virker det syntes jeg har prøvet at fortælle hele vejen, der hvor kæden springer af, der når den tjekker min adgang, så i kontrollen sker der det at den siger de to ting ikke passer, enten bruger navn eller password
Avatar billede nbj1 Praktikant
19. juni 2007 - 10:29 #53
hmmm det er modsigende det jeg siger, ok jeg kommer videre til admin2.php men hvis jeg bruger admin.php kommer jeg ik videre, så du har ret tjekket virker det er noget kode i admin.php der afviser, så langt så godt
Avatar billede nbj1 Praktikant
19. juni 2007 - 10:42 #54
hvis jeg laver et tjek af adgang via checklogin.php i admin2.php og skriver echo ud hvis det er ok tjekket, så skriver den ok, så det har ik noget med adgang at gøre kan jeg se nu.
og kommer tilbage til start af indlæg hvor jeg skriver det er header problemer.
da hvis jeg tager linien med
header("Location: access_admin.php);
s[ forbliver jeg i login billedet
Avatar billede nbj1 Praktikant
19. juni 2007 - 11:32 #55
så fejlen ligger i dette efter login, tjek i admin.php
//authorized login check
    include("checklogin.php");
    if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized
    {
        //show authorization form
        header("Location: access_admin.php");
    }
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 12:30 #56
Det er ikke nok at du kommer videre til admin2.php - der skal også stå noget i $_SESSION-arrayet.

Og du har gjort som: 18/06-2007 10:07:21
Avatar billede nbj1 Praktikant
19. juni 2007 - 12:40 #57
jo men har jo prøvet med
session_start();
print_r($_SESSION);
enten er det forkert skrevet eller også er der ikke noget i det array
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 12:47 #58
Ja, det var så i den ene fil, af de 2-3 stykker vi kigger på.
Avatar billede nbj1 Praktikant
19. juni 2007 - 12:48 #59
og det eneste den skriver ud på siden er dette:
Array()
Avatar billede nbj1 Praktikant
19. juni 2007 - 12:50 #60
niks jeg afvikler access_admin.php angiver bruger og password og bliver sendt vidre til admin2.php
hvor jeg har
session_start();
print_r($_SESSION);
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 12:52 #61
Ja, og i access_admin.php  ?
Avatar billede nbj1 Praktikant
19. juni 2007 - 12:53 #62
alle de ting jeg har afprøvet/testet på, er i admin2.php
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 13:02 #63
18/06-2007 10:07:21 siger at session_start() skal stå øverst. Når du får prøvet det, så vend tilbage og fortæl hvad der sker.
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:02 #64
session_start();

    include("./cfg/connect.inc.php");

    if (isset($_POST["authorize"]))
    {
        if (!strcmp(base64_encode($_POST["login"]), ADMIN_LOGIN) && !strcmp(md5($_POST["password"]), ADMIN_PASS))
        { //login ok
            $_SESSION["log"] = ADMIN_LOGIN;
            $_SESSION["pass"] = ADMIN_PASS;
            //redirect to the admin interface
            header("Location: admin.php");  <--- admin2.php
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:03 #65
session start start i toppen
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 13:05 #66
Jeg kan ikke se du har anbragt session_start(); øverst når jeg sammenligner 19/06-2007 13:02:52 og 18/06-2007 09:41:53
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:13 #67
nej det er også to forskellige filer 19/06-2007 13:02:52 er access_admin.php og 18/06-2007 09:41:53 er admin.php
den vi tester på er access_admin.php der går over i admin2.php og i begge filer står session start i toppen
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 13:16 #68
Ja, jeg ramte det forkerte indlæg. Men jeg fastholder: "Jeg kan ikke se du har anbragt session_start(); øverst "
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:21 #69
så fortæl mig hvilken fil du snakker op
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:41 #70
erik hvad mener du lige med at der skrives et array ud ?

hvis der kan laves et array skulle dette lille script fortælle nogle ting derom

<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('html_errors', false);
// Simple array:
$array = array(1, 2);
$count = count($array);
for ($i = 0; $i < $count; $i++) {
    echo "\nChecking $i: \n";
    echo "Bad: " . $array['$i'] . "\n";
    echo "Good: " . $array[$i] . "\n";
    echo "Bad: {$array['$i']}\n";
    echo "Good: {$array[$i]}\n";
}
?>
men der skrives intet ud til skærmen :/
Avatar billede nbj1 Praktikant
19. juni 2007 - 13:43 #71
kan du prøve om det script skriver noget ud på din skærm
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 13:50 #72
$_SESSION er et array - der skal selvfølgelig være noget i det på admin(2).php
Hvilken fil? Alle dem vi har snakket om.
Avatar billede nbj1 Praktikant
19. juni 2007 - 14:09 #73
hee forviret kan jeg forstå
1 9/06-2007 13:41:57 er bare en test af om jeg kan lave et array og få det ud igen og det ser udtil jeg kan.
2 jeg for ingen array ud i admin2.php
Avatar billede nbj1 Praktikant
19. juni 2007 - 14:46 #74
det jeg har lidt på fornemmelsen er at garbage+collection sletter mit session array før det bliver skrivet til disk.
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 15:09 #75
Sessioner plejer at virke når man har session_start(); øverst i alle filer, der bruger $_SESSION. Det vil jeg se, før jeg vil lede efter fejl andre steder.
Avatar billede nbj1 Praktikant
19. juni 2007 - 15:15 #76
ok dette for tæller mig session er lukket :

<?php
//session_unset();
$_SESSION['testMe']='test';
@session_start();

$_SESSION['blabla'] = 123;
if(isset($_SESSION['testMe']))
{
    echo "Session was open\n";
    unset($_SESSION['testMe']);
}
else
    echo "Session was closed\n";
?>
Avatar billede nbj1 Praktikant
19. juni 2007 - 15:17 #77
ændring ok med dette i toppen er session open
@session_start();
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 15:20 #78
Ikke "@" foran - så ser du ikke eventuelle fejl.
Avatar billede nbj1 Praktikant
19. juni 2007 - 15:29 #79
ok men for jeg at vide at session open
men det er når jeg går fra access_admin.php > admin2.php
går fra access_admin.php i admin.php
bliver jeg i access_admin.php :(
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 15:31 #80
Du ved først om sessioner virker, når du gå til en anden side, og aflæser $_SESSION
Avatar billede nbj1 Praktikant
19. juni 2007 - 15:37 #81
det forstår jeg ik
på den ene side siger du session start skal være i top på hver side ik ?
og når jeg går fra access_admin.php med session i top til admin2.php
med det fra kl 15.15:39
der også har session i top,,,,, nu faldt jeg af sporet med session :)
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 15:56 #82
Ja, i lige måde. Men 15.15:39 har ikke session_start() i toppen. Jeg vil gerne se eksempel på at 2 scripts, hver med session_start() i toppen, den ene sætter en session-variabel, redirecter til det andet script, som så skriver den ud.

Det er næsten verdens mindste eksempel, men alternativt kan du bruge de scripts du har. Jeg vil blot gentage, at jeg ikke vil bruge tid på at lede efter andre fejl, før jeg ksn se, at du har session_start() som det første.
Avatar billede nbj1 Praktikant
19. juni 2007 - 16:05 #83
ok glem det forgående kik på dette og fortæl mig hvad der går galt
access_admin.php:
<?php

session_start();
header('Content-Type: text/html; charset=UTF-8');



    ini_set("display_errors", "1");



    //admin mode access file

   

    include("cfg/connect.inc.php");

   
    if (isset($_POST["authorize"]))

    {
        if (!strcmp(base64_encode($_POST["login"]), ADMIN_LOGIN) && !strcmp(md5($_POST["password"]), ADMIN_PASS))

        { //login ok

            $_SESSION["log"] = ADMIN_LOGIN;

            $_SESSION["pass"] = ADMIN_PASS;

            //redirect to the admin interface

            header("Location: admin.php");

        }

        else $errorStr = "Invalid login and/or password";

    }



?>

<html>

<head>

<link rel=STYLESHEET href="style1.css" type="text/css">

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>Administrator login</title></head>

<body>

<center>



<?php

    if (isset($errorStr)) echo "<font color=red><b>$errorStr</b></font>";

?>



<form name="form1" method="post" action="access_admin.php">

    <table border="0" cellpadding="2" cellspacing="1" bgcolor="#333333">

      <tr bgcolor="#CCCCCC">

        <td colspan="2" align=center><h4>Administrator login</h4></td>

  </tr>

      <tr bgcolor="#FFFFFF">

        <td align="right">Login:</td>

        <td>

          <input type="text" name="login"<?php if (isset($_POST["login"])) echo ' value="'.str_replace("\"","&quot;",stripslashes($_POST["login"])).'"';?>></td>

  </tr>

      <tr bgcolor="#FFFFFF">

        <td align="right">Password:</td>

        <td>

          <input type="password" name="password"></td>

  </tr>

</table>



    <p>

      <input type="hidden" name="authorize" value="1">

      <input type="submit" value="Login">

    </p>

  </form>

  <p><a href="index.php">Go to front-end...</a></p>

</center>

</body>

</html>
admin.php:
<?php



session_start();



    ini_set("display_errors", "1");



//main admin module



function add_department($admin_dpt)

    //adds new $admin_dpt to departments list

{

    global $admin_departments;



    $i = 0;

    while ($i<count($admin_departments) && $admin_departments[$i]["sort_order"] < $admin_dpt["sort_order"]) $i++;

    for ($j=count($admin_departments)-1; $j>=$i; $j--)

        $admin_departments[$j+1] = $admin_departments[$j];

    $admin_departments[$i] = $admin_dpt;

}



    include("cfg/connect.inc.php");

    include("includes/database/mysql.php");

    include("cfg/general.inc.php");

    include("cfg/appearence.inc.php");

    include("cfg/functions.php");

    include("cfg/category_functions.php");

    include("cfg/language_list.php");




    //authorized login check

    include("checklogin.php");

   
    if (!isset($_SESSION["log"]) || !isset($_SESSION["pass"])) //unauthorized

    {

        //show authorization form

        header("Location: access_admin.php");

    }



    //logout?

    if (isset($_GET["logout"])) //logout

    {

        //show authorization form

        $_SESSION["log"] = "";

        $_SESSION["pass"] = "";

        unset($_SESSION["log"]);

        unset($_SESSION["pass"]);

        die("<script>window.location='access_admin.php';</script>");

    }



    //init Smarty

    require 'smarty/smarty.class.php';

    $smarty = new Smarty; //core smarty object

    $smarty_mail = new Smarty; //for e-mails



    if (!isset($_SESSION["current_language"]) ||

        $_SESSION["current_language"] < 0 || $_SESSION["current_language"] > count($lang_list))

            $_SESSION["current_language"] = 0; //set default language



    if (isset($lang_list[$_SESSION["current_language"]]) && file_exists("./languages/".$lang_list[$_SESSION["current_language"]]->filename))

        include("./languages/".$lang_list[$_SESSION["current_language"]]->filename); //include current language file

    else

    {

        die("<font color=red><b>ERROR: Couldn't find language file!</b></font>");

    }





    //connect to database

    db_connect(DB_HOST,DB_USER,DB_PASS) or die (db_error());

    db_select_db(DB_NAME) or die (db_error());



    //set Smarty include files dir

    $smarty->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/admin";

    $smarty_mail->template_dir = $lang_list[$_SESSION["current_language"]]->template_path."/mail";



    //get currency ISO 3 code

    $currency_iso_3 = (defined('CONF_CURRENCY_ISO3')) ? CONF_CURRENCY_ISO3 : "USD" ;

    $smarty->assign("currency_iso_3", $currency_iso_3);



    // several functions



    function mark_as_selected($a,$b) //required for excel import

    //returns " selected" if $a == $b

    {

        return !strcmp($a,$b) ? " selected" : "";



    } //mark_as_selected





    function get_NOTempty_elements_count($arr) //required for excel import

        //gets how many NOT NULL (not empty strings) elements are there in the $arr

    {

        $n = 0;

        for ($i=0;$i<count($arr);$i++)

            if (trim($arr[$i]) != "") $n++;

        return $n;

    } //get_NOTempty_elements_count





    //end of functions definition



    //define department and subdepartment

    if (!isset($_GET["dpt"]))

    {

        $dpt = isset($_POST["dpt"]) ? $_POST["dpt"] : "";

    }

    else $dpt = $_GET["dpt"];

    if (!isset($_GET["sub"]))

    {

        if (isset($_POST["sub"])) $sub = $_POST["sub"];

    }

    else $sub = $_GET["sub"];



    //define smarty template

    $smarty->assign("admin_main_content_template", "default.tpl.html");

    $smarty->assign("current_dpt", $dpt);



    //get new orders count

    $q = db_query("select count(*) from ".ORDERS_TABLE) or die (db_error());

    $n = db_fetch_row($q);

    $smarty->assign("new_orders_count", $n[0]);



    $admin_departments = array();



    // includes all .php files from includes/ dir

    $includes_dir = opendir("includes/admin");

    $file_count = 0;

    while ( ($inc_file = readdir($includes_dir)) != false )

        if (strstr($inc_file,".php"))

        {

            include("includes/admin/$inc_file");

            $file_count++;

        }



    if (isset($sub)) $smarty->assign("current_sub", $sub);



    $smarty->assign("admin_departments", $admin_departments);

    $smarty->assign("admin_departments_count", $file_count);



    //show Smarty output

    $smarty->display($lang_list[$_SESSION["current_language"]]->template_path."admin/index.tpl.html");



?>
Avatar billede nbj1 Praktikant
19. juni 2007 - 16:25 #84
hvad med dette:

admin1  :

<?php

session_start();

$_SESSION['testMe']='test';

$_SESSION['blabla'] = 123;
header("Location: admin2.php");
?>


admin2  :


<?PHP
session_start();

if(isset($_SESSION['testMe']))
{
    echo "Session was open\n";
    unset($_SESSION['testMe']);
}
else
    echo "Session was closed\n";


?>
resultat session closed
Avatar billede nbj1 Praktikant
19. juni 2007 - 17:09 #85
det sidste script virker ikke efter hensigten da jeg i php.ini har sat autostart til on og script meddeler stadig session closed... jeg fatter ik lige hvad der sker
Notice: A session had already been started - ignoring session_start() in /var/www/html/webdesign4u/admin2.php on line 2
Session was closed
Avatar billede nbj1 Praktikant
19. juni 2007 - 17:10 #86
autostart session naturligvis
Avatar billede nbj1 Praktikant
19. juni 2007 - 17:32 #87
nu har jeg to script der virker hvor jeg kan se session på nr 2 side
der er to test fra side 1 en for hvis session cookie er acepteret. den anden hvis session id bliver skrevet efter browser stien i top
1 virker ikke
2 virker
på side 2
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 21:21 #88
Ja, der kunne du jo have været for 1½ dag siden. 17/06-2007 12:28:33 "minimalt eksempel, der ikke virker". Accepterer din browser cookies? Har du et link til det minimale eksempel?
Avatar billede nbj1 Praktikant
19. juni 2007 - 23:26 #89
Avatar billede erikjacobsen Ekspert
19. juni 2007 - 23:34 #90
Jeg tror du skal overlade pilleri php.ini til dem, der ved hvad de gør. Find den oprindelige. Dine HTTP-headers ser sådan ud

HTTP/1.1 200 OK
Date: Tue, 19 Jun 2007 21:23:06 GMT
Server: Apache/2.2.3 (CentOS)
Set-Cookie: PHPSESSID=abuhasn55nmek0qopevmdni9je5e9kgo; expires=Tue, 19 Jun 2007
21:43:13 GMT; path=/var/www/html/cookie
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: private, max-age=216000, pre-check=216000
Last-Modified: Tue, 19 Jun 2007 15:14:47 GMT
Content-Length: 168
Connection: close
Content-Type: text/html; charset=UTF-8
Content-Language: dk

Og her er "path"-delen på linien "Set-Cookie" helt i skoven. Derfor vil den cookie aldrig blive sendt tilbage. Og der er heller ikke normalt en expires på en sessioncookie.
Avatar billede nbj1 Praktikant
20. juni 2007 - 07:14 #91
deter fordi jeg sat expire cookie til 0 det vel sige den expire når browseren lukker, før blev den smidt væk med det samme.
ellers har jeg kun rettet hvor den skal smide cookien.
den bruger oprendelig phpsessid.
Avatar billede erikjacobsen Ekspert
20. juni 2007 - 09:09 #92
"ellers har jeg kun rettet hvor den skal smide cookien."  ... ;) ... nej, du retter i noget, du ikke ved hvad er. Start med en rigtig php.ini, og lad være med at pille for meget.
Avatar billede nbj1 Praktikant
21. juni 2007 - 08:25 #93
hej erik har selv fundet udaf det, gi lige et svar for point tak
Avatar billede erikjacobsen Ekspert
21. juni 2007 - 09:06 #94
Jeg samler slet ikke på point, tak.
Avatar billede nbj1 Praktikant
21. juni 2007 - 09:17 #95
ok men tak for hjælpen
Avatar billede nbj1 Praktikant
21. juni 2007 - 09:18 #96
lukket
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