我是 php 的新事物。使用原则 2 启动应用程序。
我有两个文件:
引导.php:
<?php
use Doctrine'ORM'Tools'Setup;
use Doctrine'ORM'EntityManager;
require_once "vendor/autoload.php";
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration(array(__DIR__."/src"), $isDevMode);
$conn = array(
'driver' => 'pdo_pgsql',
'user' => 'postgres',
'password' => '123456',
'host' => 'localhost',
'dbname' =>'usrdb',
);
$entityManager = EntityManager::create($conn, $config);
现在我尝试从另一个文件调用$entityManager
:
<?php
require_once "bootstrap.php";
///***code
$session = $entityManager->find('Sessions', $_SESSION['id']);
//**code again
我得到错误:
Notice: Undefined variable: entityManager in D:'xampp'htdocs'mapFace-backend'geoserv.auth.login.php on line 23
这些文件位于同一目录中。
可能出了什么问题?
更新
完整代码:
<?php
require ''bootstrap.php';
//require_once "geoserv.auth.lastact.php";
function login () {
//ini_set ("session.use_trans_sid", true);
//session_start();
print_r($_SESSION['id']);
if (isset($_SESSION['id'])){
echo("SESSION");
if(isset($_COOKIE['login']) && isset($_COOKIE['password'])){
echo("COOKKIE");
SetCookie("login", "", time() - 1, '/');
SetCookie("password","", time() - 1, '/');
setcookie ("login", $_COOKIE['login'], time() + 50000, '/');
setcookie ("password", $_COOKIE['password'], time() + 50000, '/');
$id = $_SESSION['id'];
//lastAct($id);
return true;
} else {//иначе добавим cookie с логином и паролем, чтобы после перезапуска браузера сессия не слетала
$session = $entityManager->find('Sessions', $_SESSION['id']);
if ($session){ //если получена одна строка
setcookie ("login", $session->getUserName(), time()+50000, '/');
setcookie ("password", md5($session->getUserName().$session->getPass()), time() + 50000, '/');
$tm = time();
$session->setLastAct($tm);
$entityManager->persist($session);
$entityManager->flush();
return true;
}else{
return false;
}
}
}else{
echo ("NO SESSION");
}
}
<?php
require 'bootstrap.php'; // remove /
//require_once "geoserv.auth.lastact.php";
function login ($entityManager) { // passed the variable here
//ini_set ("session.use_trans_sid", true);
//session_start();
print_r($_SESSION['id']);
if (isset($_SESSION['id'])){
echo("SESSION");
if(isset($_COOKIE['login']) && isset($_COOKIE['password'])){
echo("COOKKIE");
SetCookie("login", "", time() - 1, '/');
SetCookie("password","", time() - 1, '/');
setcookie ("login", $_COOKIE['login'], time() + 50000, '/');
setcookie ("password", $_COOKIE['password'], time() + 50000, '/');
$id = $_SESSION['id'];
//lastAct($id);
return true;
} else {//иначе добавим cookie с логином и паролем, чтобы после перезапуска браузера сессия не слетала
$session = $entityManager->find('Sessions', $_SESSION['id']);
if ($session){ //если получена одна строка
setcookie ("login", $session->getUserName(), time()+50000, '/');
setcookie ("password", md5($session->getUserName().$session->getPass()), time() + 50000, '/');
$tm = time();
$session->setLastAct($tm);
$entityManager->persist($session);
$entityManager->flush();
return true;
}else{
return false;
}
}
}else{
echo ("NO SESSION");
}
}