我是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) 在将密码存储在MySQL数据库中之前,我使用以下方法对密码进行加密。
目前,我已将密码限制为最大长度。20个字符,因为我不确定较长的密码是否会由于加密输出而在此处引起问题。
在PHP中,我使用以下代码进行加密:
$pw = password_hash($_POST["pw"], PASSWORD_BCRYPT);
Run Code Online (Sandbox Code Playgroud)
密码在传递之前在客户端进行了修整。
有人可以告诉我是否 CHAR(60) 足以覆盖最多100个字符(数字,大写和小写字母,特殊字符)的密码吗?
另外,是否有一个共同的最大值。应为密码设置的字符限制-不会增加漏洞? 我了解到有些人肯定想使用更长的密码,例如短短语等。
我是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.
非常感谢,迈克
我有一个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)
非常感谢您的帮助。
我是 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"]数组中的所有值保存在一个变量中,用逗号分隔(最后没有逗号)。
有人可以帮我弄这个吗 ?
提前谢谢了
我试图以防止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()
提前谢谢了.
我有一个变量$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)