【问题标题】:PHP Variables passing in webpage在网页中传递的 PHP 变量
【发布时间】:2023-04-06 01:43:01
【问题描述】:

在我的 php 文件中,我正在创建一个登录名,非常详细,所以我不会发布它,但我也是 php 新手,我需要一件事的帮助。我不确定$_SESSION 是否可以为此工作,但如果可以,我不知道该怎么做。

  1. 这就是我想知道的... 如果我有人登录,我可以有一个变量(有用户名,所以我不在乎它是否以某种方式存储在 url 中。)从一个页面传递到另一个页面,并通过调用它被读入每个文件。那我也可以清空变量吗

  2. 还有一个更简单的问题...如何在 php 中创建文件夹?

我的目录仍然不工作

if (is_writable('/users')) {
  if (mkdir('/users/$finalusername')) {
    // success
  }
}
$myFile = "/users/$finalusername/$finalusername.txt";
$fh = fopen($myFile, 'w') or die("There was an error in creating your account.  <br />");
$stringData = "$finalusername\n";
fwrite($fh, $stringData);
$stringData = "$finalpass\n";
fwrite($fh, $stringData);
$stringData = "$finalemail\n";
fwrite($fh, $stringData);
fclose($fh);
}

【问题讨论】:

  • 我确实解决了它,但是当我在线时它不起作用。我让每个页面都从文本文件中读取一个变量,并且在有人登录时设置该变量,并在有人注销时销毁该变量,但如果我一次有多个人登录,这将不起作用。老实说,我不知道如何使用 $SESSION
  • 如果你尝试了一些东西,然后发布一些代码并解释为什么它不起作用。 Stack Overflow 不是一个根据命令为您吐出代码的网站。你必须付出一些努力。
  • 我已经尝试 $SESSION start 以获取您的信息我没有成功,这是一个寻求帮助的网站...因为我正在做你为什么要评论...我确实尝试过传递变量 soooo
  • 在你的问题中加入一些实际的代码。
  • 我没有相关代码,因为我在这方面完全失败了

标签: php session variables


【解决方案1】:

不要在 URL 查询字符串中传递任何类型的身份验证值。如果通过这种方式,用户篡改他们的设置(或其他用户的设置)将是微不足道的。

$_SESSION 更适合这种事情,并且易于实现。登录成功后,为用户设置一个会话变量:

// Must be called to initiate session
session_start();

// Login was successful 
$_SESSION['username'] = $the_username;

// On other pages:
session_start();

if (isset($_SESSION['username'])) {
  // user is logged in
}
else // show the login form

注销用户:

// Method 1 only unsets the username to log out the user
session_start();
unset($_SESSION['username']);

// Alternatively you can destroy the whole session, if
// you are not using it for anything else the user may need again
// despite not being logged in (maybe his preferred language, for example)
session_destroy();
unset($_SESSION);

要使用 PHP 创建目录,请使用 mkdir()。 Web 服务器用户帐户必须对创建新目录的目录具有写入权限才能正常工作。

if (is_writable('/path/to/parentdir')) {
  if (mkdir('/path/to/parentdir/new_directory')) {
    // success
  }
  else {
    // handle error
  }
}
else // This directory has to be writable by the web server!

【讨论】:

  • 所以要退出? session_end(); $_SESSION['username'] = $the_username;
  • 要注销:session_start(); session_destroy(); unset($_SESSION); 您必须在注销页面上启动会话才能销毁它。
  • @SpencerMay 见上面的补充 - 两种注销方法。
  • @SpencerMay 哈哈,我真的不需要投票。如果您满意,请将答案标记为已接受,欢迎来到 Stack Overflow。
【解决方案2】:

每个问题我都会给你一个链接

Simple Login Form in PHP with Sessions

请不要让您的用户名出现在使用 get 变量的地址中。尝试结合使用 $_SESSION 和 $_POST 以获得良好的结果。

想象一下,如果我将地址从www.yourpage.com?username=kypros 更改为www.yourpage.com?username=administrator,我会立即成为管理员吗?

至于第二个问题,你想要的是 mkdir() function to create new folders

【讨论】:

  • 谢谢 :) 和网址上的好点...我也不知道为什么,但 mkdir() 早些时候对我不起作用。
  • 如果它没有像你期望的那样工作,我的猜测是你在服务器上的写权限有问题,或者是某种拼写错误,因为它是一个非常简单的命令
【解决方案3】:

$_SESSION 是您的最佳答案。它通过在客户端上存储一个带有唯一会话 ID 的 cookie(作为 HTTP 响应的一部分发送)来工作。然后随着从客户端发送到您的服务器的每个请求将其发回,直到未设置 cookie。然后服务器将相关信息存储在临时会话变量中。在服务器端销毁会话(通过超时或通过您的代码)也意味着用户将被注销(没有为会话存储任何信息)。

【讨论】:

    【解决方案4】:

    mkdir()是一个用于创建目录的函数。

    理想情况下,您会使用数据库来存储用户登录详细信息。然后使用一个表格,有人可以输入他们的用户名和密码。当他们点击提交按钮时,表单会将用户输入的值发布到登录脚本。然后登录脚本将搜索数据库以查看用户名和密码是否与 dababase 中的任何匹配。如果他们这样做了,那么您可以使用session_start() 创建一个会话,并可以创建一个等于用户输入的用户名的$_SESSION 变量。

    根据用户是否登录,在您希望显示内容的所有网页上使用session_start() 功能。

    您可以使用if() 循环来确定$_SESSION['username'] 是否存在,如果存在则显示内容。 要结束会话,请使用 session_destory() 函数。

    【讨论】:

      猜你喜欢
      • 2015-07-03
      • 2012-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2010-10-26
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多