Session problem
13 отговора
581 прегледа
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) но прочетох в документациите, че не е удчно.
Някой има ли идея, как мога да направя следното нещо :
Имам една 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) но прочетох в документациите, че не е удчно.
Re: Session problem
може би трябваше да пропуснеш нещата, които се разбират от само себе си и да напишеш направо защо не стана, респ. каква грешка получи на сесията?
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());
}
?>
Ако не става, кажи каква грешка получаваш?
<?
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());
}
?>
Ако не става, кажи каква грешка получаваш?
Re: Session problem
Дава ми следната Warning грешка :
Cannot send session cookie - headers already sent
И когато отида в новата страница променливите, които съм задал във $_POST и $_SESSION ги няма. Нещо не мога да разбера. Това нали са глобални променливи ???
Cannot send session cookie - headers already sent
И когато отида в новата страница променливите, които съм задал във $_POST и $_SESSION ги няма. Нещо не мога да разбера. Това нали са глобални променливи ???
Re: Session problem
а в новата страница пускаш ли session_start?
какви са ти настройките на сейшов в рнр.ини? какви са ти настройките на кукита в браузър? какво имаш преди сейшънІстар в предния файл щот има нещо от което ти се насира всичко.
те не са глобални, те са суперглобалз... пък и пост няма как да предадеш освен чрез метод пост и е съвсем ясно, че на другата страница няма да го има ако не го постнеш там отново.
какви са ти настройките на сейшов в рнр.ини? какви са ти настройките на кукита в браузър? какво имаш преди сейшънІстар в предния файл щот има нещо от което ти се насира всичко.
те не са глобални, те са суперглобалз... пък и пост няма как да предадеш освен чрез метод пост и е съвсем ясно, че на другата страница няма да го има ако не го постнеш там отново.
Re: Session problem
колкото и глобални да са, това не значи че важат за всички отворени страници до следващия четвъртък. ако ги има дефинирани в страницата, има ги. тебе проблема ти е че ги няма, защото не ти се сетва куката. а не ти се сетва, щото имаш я некой нов ред извън <??>, я некоя пауза преди да стартираш сесията - съобщението за грешка е съвсем ясно. почвай да триеш едно по едно нещата дето са преди session_start()
Re: Session problem
Ами направи го ТОЧНО КАКТО съм ти показал:
<? Това да са ти първите два символа във файла и после -> session_start()
<? Това да са ти първите два символа във файла и после -> session_start()
Re: Session problem
Именно.
И аз съм си блъскал главата с подобен проблем. Файлът трябва да почва така:
<?php
session_start (или include blah.php, където има session_start())
?>
и чак след това
<html.........
И аз съм си блъскал главата с подобен проблем. Файлът трябва да почва така:
<?php
session_start (или include blah.php, където има session_start())
?>
и чак след това
<html.........
Re: Session problem
Написах го точно така, но пак не ставаше.
Използвам един файл dbconnect.php. В него правя конекция към базата данни с името и паролата от POST и ги записвам в $_SESSION. В началото на всеки PHP файл, където ми е необходима връзка към базата данни слагам
include ("dbconnect.db") ;
И нищо. Когато вместо include, си вмъкна директно кода всичко е наред и променливите в $_SESSION се запазват.
Използвам един файл dbconnect.php. В него правя конекция към базата данни с името и паролата от POST и ги записвам в $_SESSION. В началото на всеки PHP файл, където ми е необходима връзка към базата данни слагам
include ("dbconnect.db") ;
И нищо. Когато вместо include, си вмъкна директно кода всичко е наред и променливите в $_SESSION се запазват.
Re: Session problem
Виж сега... проблемът е (почти убеден съм), че в някой от ПХП файловете които инклудваш си оставил празно място преди <?php
Всеки файл, който се инклудва преди сесията да бъде стартирана трябва да започва така
<?php
имам предвид точно така, без празни разстояния или редове преди тези 2 знака.
Ако така не става, не знам вече... просто проследи целия код който се изпълнява ПРЕДИ въпросната инструкция сешън старт... някъде там имаш знак (дори и празен интервал, който е извън така на пхп и сървъра автоматично започва да изпраща хедъри към клиента и всичко се бъгва.
Пробвай и кажи кво става!
Всеки файл, който се инклудва преди сесията да бъде стартирана трябва да започва така
<?php
имам предвид точно така, без празни разстояния или редове преди тези 2 знака.
Ако така не става, не знам вече... просто проследи целия код който се изпълнява ПРЕДИ въпросната инструкция сешън старт... някъде там имаш знак (дори и празен интервал, който е извън така на пхп и сървъра автоматично започва да изпраща хедъри към клиента и всичко се бъгва.
Пробвай и кажи кво става!
Редактирано от id на
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']") ;
не може да се отпечата ??? По начина по-горе става.
======= 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']") ;
не може да се отпечата ??? По начина по-горе става.
Re: Session problem
======= dbconnect.php =================================
<?php
include("MMKError.php");
session_start();
смени го с:
======= dbconnect.php =================================
<?php
session_start();
include("MMKError.php");
<?php
include("MMKError.php");
session_start();
смени го с:
======= dbconnect.php =================================
<?php
session_start();
include("MMKError.php");
Re: Session problem
и ти си прав
във error.php include-а сигурно има нов ред в края на файла след затварящия ?>
във error.php include-а сигурно има нов ред в края на файла след затварящия ?>