You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

PHP招聘网站开发问题:发布职位时如何获取$_SESSION中的ID

解决PHP招聘网站发布广告时获取SESSION中ID的问题

嗨,这问题其实挺常见的,咱们一步步拆解来解决:

1. 先确保Session全局初始化

所有涉及Session操作的页面(登录页、后台管理页、发布广告页),必须在页面最顶部(任何HTML输出之前)加上这句代码开启Session功能:

session_start();

要是漏了这一步,$_SESSION数组根本就不存在,自然拿不到里面的ID。

2. 用户登录成功时存入企业主ID到Session

在登录验证逻辑里,当你从owner_company表查到合法的企业主信息后,把他的id存入Session:

// 假设你已经通过邮箱+密码验证了用户,$valid_owner是查询到的owner_company表数据
$_SESSION['owner_id'] = $valid_owner['id'];
// 也可以顺便存个用户名,方便后台页面显示
$_SESSION['owner_fullname'] = $valid_owner['name'] . ' ' . $valid_owner['surname'];

这样用户在整个会话期间,这个ID会一直保存在服务器端的Session中。

3. 发布广告时读取Session中的ID

进入发布广告的页面后,先确认Session已开启(同样开头加session_start()),然后先做登录校验,防止未授权访问:

session_start();

// 检查Session里的owner_id是否存在,不存在就跳回登录页
if (!isset($_SESSION['owner_id'])) {
    header("Location: login.php");
    exit;
}

// 取出企业主ID
$current_owner_id = $_SESSION['owner_id'];

4. 关联获取对应的company_id

因为job_advertising表需要company_id,而这个ID存在companies表中(关联字段是owner_id),所以我们要根据已有的owner_id查询对应的公司ID:

// 推荐用PDO或mysqli预处理语句,避免SQL注入风险
// 以PDO为例:
$pdo = new PDO('mysql:host=你的数据库主机;dbname=你的数据库名', '账号', '密码');
$stmt = $pdo->prepare("SELECT id FROM companies WHERE owner_id = ?");
$stmt->execute([$current_owner_id]);
$company_info = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$company_info) {
    // 如果没查到对应公司,提示用户先完成企业信息注册
    echo "请先完成企业信息绑定再发布广告!";
    exit;
}
$current_company_id = $company_info['id'];

5. 插入招聘广告数据

最后把获取到的owner_idcompany_id和广告内容插入到job_advertising表:

$stmt = $pdo->prepare("INSERT INTO job_advertising (company_id, owner_id, description, salary) VALUES (?, ?, ?, ?)");
$stmt->execute([$current_company_id, $current_owner_id, $_POST['description'], $_POST['salary']]);

// 插入成功后可以提示用户或跳转到广告列表页
echo "招聘广告发布成功!";

额外安全提醒

  • 永远不要直接把用户输入拼进SQL语句,一定要用预处理语句防范SQL注入
  • 可以给Session设置合理的过期时间,增强账号安全性
  • 所有后台页面都要加上登录校验逻辑,防止未授权访问

内容的提问来源于stack exchange,提问作者user9441754

火山引擎 最新活动