小编Tan*_*uta的帖子

PHP:如何检查用户是否已登录,否则重定向到登录页面

我是PHP新手,我正在努力解决以下问题:

我有一个页面,我想在他们看到网站内容之前检查某人是否是注册用户.所以我的想法是在我的头文件(在所有单个页面上引用require_once("includes/header.php");)我可以检查并将它们重定向到登录页面(login.php),如果他们还没有登录.

所以这是我在标题中的所有内容:

<!DOCTYPE html>
<html>
    <head>
        <?php 
            define("someUnguessableVariable", "anotherUnguessableVariable");
            session_start();
            if(!(isset($_SESSION['login']) && $_SESSION['login'] != '')){
                header ("Location: login.php");
            }

            include "system/config.php";

            $pageURL = basename($_SERVER["REQUEST_URI"]);
            $pageName = pathinfo(parse_url($pageURL, PHP_URL_PATH), PATHINFO_FILENAME); 

            $selectedLang = $_GET["lang"];
                if(!isset($selectedLang)){
                    $selectedLang = "de";
                }
            $langURL = "?lang=" . $selectedLang;

            $conn = new mysqli($dbServer, $dbUser, $dbPass, $dbName);
            $conn->set_charset("utf8");
            if($conn->connect_error){
                die("Connection failed: " . $conn->connect_error);
            } 
            // fetch main translations
            $location = "%main%";
            $stmt = $conn->prepare("SELECT tID, " . $selectedLang . " FROM TranslationsMain …
Run Code Online (Sandbox Code Playgroud)

php session redirect login session-variables

5
推荐指数
1
解决办法
3万
查看次数

PHP / MySQL:为加密密码选择哪种数据类型(bcrypt,最大100个字符)

在将密码存储在MySQL数据库中之前,我使用以下方法对密码进行加密

目前,我已将密码限制为最大长度。20个字符,因为我不确定较长的密码是否会由于加密输出而在此处引起问题。

在PHP中,我使用以下代码进行加密:

$pw = password_hash($_POST["pw"], PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)

密码在传递之前在客户端进行了修整。

有人可以告诉我是否 CHAR(60) 足以覆盖最多100个字符(数字,大写和小写字母,特殊字符)的密码吗?

另外,是否有一个共同的最大值。应为密码设置的字符限制-不会增加漏洞? 我了解到有些人肯定想使用更长的密码,例如短短语等。

php mysql passwords hash

3
推荐指数
1
解决办法
3656
查看次数

PHP:如何在cookie中存储会话

我是PHP新手,目前正在努力解决以下问题:

我有一个登录页面,我在下面开始会话,到目前为止效果很好.

session_start();
// ...
$_SESSION["Customer"]["username"] = $username;
$_SESSION["Customer"]["email"] = $email;
Run Code Online (Sandbox Code Playgroud)

现在我以前从未使用过会话,但假设一旦用户关闭浏览器就死了,我想让他们保持登录状态,以便他们无论何时重新进入页面都不必这样做.我的想法是使用cookie,但我不确定如何将我的会话存储在cookie中.

我对此进行了一些研究并发现了以下内容,但我不确定这是否是正确的方法以及如何将其用于我需要的内容.
有人可以帮我弄这个吗 ?

session_set_cookie_params ( int $lifetime [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]] );
Run Code Online (Sandbox Code Playgroud)

lifetime在我的情况下将是无限期,所以只要可能,
path可能只是"/",
secure将是真的
,我不需要httponly.

非常感谢,迈克

php cookies session session-variables session-cookies

3
推荐指数
1
解决办法
5232
查看次数

jQuery / Ajax:如何将数组作为 Ajax 成功函数的一部分进行循环

我有一个Ajax 调用,它返回一个数组,需要对这个数组中的每个值做一些事情。

到目前为止,我有以下内容,但这会返回以下错误:

Uncaught TypeError: Cannot use 'in' operator to search for 'length' in array(5)...
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我在这里做错了什么。我该如何处理每个值?

我的阿贾克斯:

$.ajax({        
    type: "post",   
    url: "ajax.php",
    cache: "false",
    data: {
        node: 'fetchValues',
        itemIDs: itemIDs
    },
    success: function(data){
        console.log(data);  // for testing only
        jQuery.each(data, function(index, value){
            console.log(value);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

“数据”示例(来自控制台日志)

array(5) {
  [1]=>
  string(6) "Value1"
  [2]=>
  string(6) "Value2"
  [3]=>
  string(6) "Value3"
  [4]=>
  string(6) "Value4"
  [5]=>
  string(6) "Value5"
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助。

arrays ajax jquery loops

3
推荐指数
1
解决办法
2万
查看次数

PHP:如何将 $_POST 中的多个复选框数组保存在变量中

我是 PHP 新手,正在寻找以下方面的帮助:

我有一个包含各种输入、选择和文本区域的大型 HTML 表单。在提交时,我将所有字段值传递到另一个 PHP 页面以创建一封电子邮件。

适用于文本输入、单选按钮、选择、文本区域等,但不适用于复选框

在表单中,我有多个复选框,它们都使用相同的名称,如下所示:

<input type='checkbox' class='someClass' id='language1' name='language[]' value='de - German' />
<input type='checkbox' class='someClass' id='language2' name='language[]' value='en - English' />
<input type='checkbox' class='someClass' id='language3' name='language[]' value='fr - French' />
<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

在 PHP 方面,我尝试了以下操作,但是如果我将其$languages用于电子邮件正文,则它显示为空白(而所有其他字段均正确显示):

$languages = implode(',', $_POST['language[]']);
Run Code Online (Sandbox Code Playgroud)

我想要做的是将$_POST["language"]数组中的所有值保存在一个变量中,用逗号分隔(最后没有逗号)。

有人可以帮我弄这个吗 ?

提前谢谢了

php forms arrays post

2
推荐指数
1
解决办法
7384
查看次数

PHP:调整SELECT for SQL注入预防后循环不起作用

我试图以防止SQL注入(标准网站)的方式为MySQL设置PHP查询.

我有几个INSERT查询,其中更改此工作正常,但在以下SELECT我不断收到错误,因为更新,它看起来像while循环不适用于我所做的更改(它运行良好,不使用语句作为在旧代码中).

谁能告诉我这里做错了什么?

新PHP:

$stmt = $conn->prepare("SELECT ? FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, ?");
$stmt->bind_param('s', $selectedLang);
$stmt->execute();
$result = $stmt->get_result();  
while($arrCalWeekdays = $result->fetch_assoc()){
    $calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)

旧PHP(更改部分):

$sql = "SELECT " . $selectedLang . " FROM TranslationsMain WHERE location LIKE '%calendar weekday%' ORDER BY sortOrder, " . $selectedLang;
$result = $conn->query($sql);  
while($arrCalWeekdays = $result->fetch_assoc()){
    $calWeekdays[] = $arrCalWeekdays;
}
$conn->close();
Run Code Online (Sandbox Code Playgroud)

错误信息:

致命错误:在第21行的/homepages/21/d580042014/htdocs/myform.php中调用非对象上的成员函数fetch_assoc()

提前谢谢了.

php mysql select associative-array sql-injection

1
推荐指数
1
解决办法
141
查看次数

如何将每个数组项的数组转换为带有占位符的逗号分隔的字符串?

我有一个变量$input,其中包含一个数组,该数组具有可变数量的项目。

如何创建一个用逗号分隔的字符串,为每个值显示一个问号,并在每个问号周围加上引号,如下例所示?

我尝试使用以下内容,但这将所有问号都包装在一个引号中,而不是在每个问号周围都使用引号:

我的尝试:

$output = implode(",", array_fill(0, count($input), "?"));
Run Code Online (Sandbox Code Playgroud)

数组示例:

array(5) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
  [3]=>
  string(1) "4"
  [4]=>
  string(1) "5"
}
Run Code Online (Sandbox Code Playgroud)

预期产量:

$output = "?", "?", "?", "?", "?"
Run Code Online (Sandbox Code Playgroud)

电流输出:

$output = "?, ?, ?, ?, ?"
Run Code Online (Sandbox Code Playgroud)

php arrays string replace

1
推荐指数
1
解决办法
354
查看次数