Session problem

13 отговора 581 прегледа
#1

Session problem

Здравейте !
Някой има ли идея, как мога да направя следното нещо :
Имам една HTML форма със две текстови полета : UserName и UserPassword.
След като ги предам със SUBMIT бутона имам достъп до тях чрез
$_POST['UserName'] и $_POST['UserPassword']
Използвам тези стойности за връзка с mysql база данни.

mysql_connect("localhost",$_POST['UserName'],$_POST['UserPassword']) or ...

До тук всичко си работи. Но проблема е, че имам различни страници за определени оперции в базата ( за редактиране, търсене, добавяне ). Във всяка от тях трябва да се свържа с базата данни. Но стойностите на $_POST['UserName'] и $_POST['UserPassword
се губят след първото предаване. Пробвах и с $_SESSION но не стана.
Използвам PHP 5.0.4 . Мога да реша проблема с използване на глобални променливи (
register_globals=on) но прочетох в документациите, че не е удчно.

Отговор
в отговор на Zasto #2

Re: Session problem

може би трябваше да пропуснеш нещата, които се разбират от само себе си и да напишеш направо защо не стана, респ. каква грешка получи на сесията?

Отговор
в отговор на Zasto #3

Re: Session problem

Пробвай така:

<?
error_reporting(E_ALL);
session_start();
if (isset($_POST["Username") && !isset($_SESSION["Username"]) ) {
$_SESSION["Username"]=$_POST["Username"];
$_SESSION["Password"]=$_POST["Password"];
}

if (isset($_SESSION["Username"])) {
$sql=mysql_connect("host",$_SESSION["Username"],$_SESSION["Password"]) or Die(mysql_error_no());
}
?>

Ако не става, кажи каква грешка получаваш?

Отговор
в отговор на Rythm #4

Re: Session problem

Дава ми следната Warning грешка :
Cannot send session cookie - headers already sent
И когато отида в новата страница променливите, които съм задал във $_POST и $_SESSION ги няма. Нещо не мога да разбера. Това нали са глобални променливи ???

Отговор
в отговор на Zasto #5

Re: Session problem

а в новата страница пускаш ли session_start?

какви са ти настройките на сейшов в рнр.ини? какви са ти настройките на кукита в браузър? какво имаш преди сейшънІстар в предния файл щот има нещо от което ти се насира всичко.

те не са глобални, те са суперглобалз... пък и пост няма как да предадеш освен чрез метод пост и е съвсем ясно, че на другата страница няма да го има ако не го постнеш там отново.

Отговор
в отговор на Zasto #6

Re: Session problem

колкото и глобални да са, това не значи че важат за всички отворени страници до следващия четвъртък. ако ги има дефинирани в страницата, има ги. тебе проблема ти е че ги няма, защото не ти се сетва куката. а не ти се сетва, щото имаш я некой нов ред извън <??>, я некоя пауза преди да стартираш сесията - съобщението за грешка е съвсем ясно. почвай да триеш едно по едно нещата дето са преди session_start()

Отговор
в отговор на Zasto #7

Re: Session problem

Ами направи го ТОЧНО КАКТО съм ти показал:

<? Това да са ти първите два символа във файла и после -> session_start()

Отговор
в отговор на Rythm #8

Re: Session problem

Именно.

И аз съм си блъскал главата с подобен проблем. Файлът трябва да почва така:

<?php
session_start (или include blah.php, където има session_start())
?>

и чак след това
<html.........

Отговор
в отговор на Rythm #9

Re: Session problem

Написах го точно така, но пак не ставаше.
Използвам един файл dbconnect.php. В него правя конекция към базата данни с името и паролата от POST и ги записвам в $_SESSION. В началото на всеки PHP файл, където ми е необходима връзка към базата данни слагам
include ("dbconnect.db") ;
И нищо. Когато вместо include, си вмъкна директно кода всичко е наред и променливите в $_SESSION се запазват.

Отговор
в отговор на Zasto #10

Re: Session problem

Виж сега... проблемът е (почти убеден съм), че в някой от ПХП файловете които инклудваш си оставил празно място преди <?php


Всеки файл, който се инклудва преди сесията да бъде стартирана трябва да започва така

<?php

имам предвид точно така, без празни разстояния или редове преди тези 2 знака.

Ако така не става, не знам вече... просто проследи целия код който се изпълнява ПРЕДИ въпросната инструкция сешън старт... някъде там имаш знак (дори и празен интервал, който е извън така на пхп и сървъра автоматично започва да изпраща хедъри към клиента и всичко се бъгва.

Пробвай и кажи кво става!

Редактирано от id на

Отговор
в отговор на id #11

Re: Session problem

Добре, ето ги и файловете :

======= dbconnect.php =================================
<?php
include("MMKError.php");
session_start();
if (!isset($_SESSION['UserName']))
{
$_SESSION['UserName'] = $_POST['UserName'];
$_SESSION['UserPassword'] = $_POST['UserPassword'] ;
}
mysql_connect("localhost",$_SESSION['UserName'],$_SESSION['UserPassword']) or
die (mmk_error(mysql_errno())) ;
mysql_select_db("ActsControl") or
die (mmk_error(mysql_errno())) ;


================ IdUser.php =================================

<HTML>
<HEAD>
<TITLE>Идентификация</TITLE>
</HEAD>
<BODY>
<h2>Идентификация</h2>
<form method="post" action="Actove.php">
Име: <input type="text" size=30 name="UserName">


Парола : <input type="password" size=30 name="UserPassword">
<BR>


<input type="submit" value ="Влез">
</form>
</BODY>
</HTML>

?>

============= Actove.php ===========================

<?php include("dbconnect.php") ; ?>

<HTML>
<HEAD>
<TITLE>Setting one frame from another</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</HEAD>

<FRAMESET COLS="18%,88%">
<FRAME SRC="navigation.htm" NAME="left" SCROLLING=AUTO NORESIZE>
<FRAME SRC="NewAct.php" NAME="content" SCROLLING=AUTO NORESIZE>
</FRAMESET>
</HTML>

В navigaton.htm, имам линк към ViewAllActs.php

======= ViewAllActs.php ================================

<?php
session_start();
include("cls_fast_template.php");
include("MMKError.php");
include("dbconnect.php");

echo"<p>UserName=" ;
$Name = $_SESSION['UserName'] ;
echo"$Name" ;
...
...


Това горе не работи. Ако не използвам include, става. И друг интересен проблем :
echo("$_SESSION['UserName']") ;

не може да се отпечата ??? По начина по-горе става.

Отговор
в отговор на Zasto #12

Re: Session problem

======= dbconnect.php =================================
<?php
include("MMKError.php");
session_start();

смени го с:

======= dbconnect.php =================================
<?php
session_start();
include("MMKError.php");

Отговор
в отговор на id #13

Re: Session problem

Или след това ;)
?>

не тябва
трябва
?>

Отговор
в отговор на nop #14

Re: Session problem

и ти си прав
във error.php include-а сигурно има нов ред в края на файла след затварящия ?>

Отговор