Php 创建要发送到数据库的邀请代码
我试图为变量inviteCode创建一个由字母和数字组成的随机10位字符串,然后将inviteCode变量发送到数据库,似乎php代码没有为它创建要发送的10位代码,或者它创建了但没有被发送。然而,我已经成功地发送了电子邮件Php 创建要发送到数据库的邀请代码,php,html,mysql,Php,Html,Mysql,我试图为变量inviteCode创建一个由字母和数字组成的随机10位字符串,然后将inviteCode变量发送到数据库,似乎php代码没有为它创建要发送的10位代码,或者它创建了但没有被发送。然而,我已经成功地发送了电子邮件 这是一个推荐邀请系统 Invite.php php: <?php if(isset($_POST['submit'])){ $email = $_POST['email']; } $length = 10; $inviteCode = ""; $char
- 这是一个推荐邀请系统李>
<?php
if(isset($_POST['submit'])){
$email = $_POST['email']; }
$length = 10;
$inviteCode = "";
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
for ($p = 0; $p < $length; $p++) {
$inviteCode .= $characters[mt_rand(10, strlen($characters))];
}
?>
另外,在信息成功发送到数据库后,如何将用户从save.php重定向回invite.php
我是php新手,因此非常感谢您的任何反馈、评论或帮助,谢谢(Y)您的代码运行良好,但可能存在索引超出范围的问题
$inviteCode.=$characters[mt_rand(10,strlen($characters))代码>
在上面的代码中,需要在strlen()函数之后添加-1,因为数组和字符串中的索引从0开始。像这样:
$inviteCode.=$characters[mt_rand(10,strlen($characters)-1]代码>
尝试修复,看看是否有效。对于重定向,请使用PHP中的header()函数:
header('Location: http://127.0.0.1/invite.php');
exit;
不过,请确保在此之前未发送任何输出。您的代码工作正常,但可能存在索引超出范围的问题
$inviteCode.=$characters[mt_rand(10,strlen($characters))代码>
在上面的代码中,需要在strlen()函数之后添加-1,因为数组和字符串中的索引从0开始。像这样:
$inviteCode.=$characters[mt_rand(10,strlen($characters)-1]代码>
尝试修复,看看是否有效。对于重定向,请使用PHP中的header()函数:
header('Location: http://127.0.0.1/invite.php');
exit;
不过,请确保在此之前没有发送任何输出。这就是原因
if(isset($_POST['submit'])){
您的提交按钮被调用/命名为Login
,而不是submit
<input type="submit" value="Invite" name="Login" />
打开后立即将错误报告添加到文件的顶部,这是因为
if(isset($_POST['submit'])){
您的提交按钮被调用/命名为Login
,而不是submit
<input type="submit" value="Invite" name="Login" />
打开后立即将错误报告添加到文件顶部。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,.您的邮件代码在哪里?@esqew我还没有创建邮件代码,因为我认为我应该将inviteCode和电子邮件变量发送到数据库,然后从中创建邮件代码(应该在URL末尾使用该inviteCode,这样只有被邀请的人才能访问注册页面)。。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,.您的邮件代码在哪里?@esqew我还没有创建邮件代码,因为我认为应该将inviteCode和电子邮件变量发送到数据库,然后从中创建邮件代码(应该在URL末尾使用该inviteCode,这样只有被邀请的人才能访问注册页面).我开始怀疑OP是否在这里发布了完整的真实代码。他的例子中有不匹配的花括号。正因为如此,我开始认为这可能是一个可变范围的问题。@esqew我测试了OP的角色创建代码,它工作得很好。我在5.4.12上,谢谢您的时间,但是我在save.php“save.php中未定义变量inviteCode”中收到一个错误。我以为我已经在invite.php中创建了变量,可能save.php没有从invite.php接收inviteCode变量。@JSK不客气。我已编辑了我的答案,请参见“编辑”下的,该部分可能会回答此问题。请参阅注释//此处执行SQL代码
@JSK我还认为您收到的错误可能与SQL有关。确保你的专栏确实被称为inviteCode
,而不是用小写的c
来称呼inviteCode
。我开始怀疑OP是否在这里发布了完整的、真实的代码。他的例子中有不匹配的花括号。正因为如此,我开始认为这可能是一个可变范围的问题。@esqew我测试了OP的角色创建代码,它工作得很好。我在5.4.12上,谢谢您的时间,但是我在save.php“save.php中未定义变量inviteCode”中收到一个错误。我以为我已经在invite.php中创建了变量,可能save.php没有从invite.php接收inviteCode变量。@JSK不客气。我已编辑了我的答案,请参见“编辑”下的,该部分可能会回答此问题。请参阅注释//此处执行SQL代码
@JSK我还认为您收到的错误可能与SQL有关。确保您的列确实被称为inviteCode
,而不是使用小写的c
。
error_reporting(E_ALL);
ini_set('display_errors', 1);
header("Location: http://www.yoursite.com/invite.php");
exit;
if(isset($_POST['Login'])){
$email = $_POST['email'];
$length = 10;
$inviteCode = "";
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
for ($p = 0; $p < $length; $p++) {
$inviteCode .= $characters[mt_rand(10, strlen($characters))];
}
} // end brace for if(isset($_POST['Login']))
<?php
if(isset($_POST['Login'])){
$email = $_POST['email'];
$length = 10;
$inviteCode = "";
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
for ($p = 0; $p < $length; $p++) {
$inviteCode .= $characters[mt_rand(10, strlen($characters))];
}
// execute SQL codes here
// if query is successful, redirect
// i.e.
// if($query){ header("Location: http://www.yoursite.com/invite.php"); exit; }
} // end brace for if(isset($_POST['Login']))
?>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$DB_HOST = "xxx"; // replace
$DB_NAME = "xxx"; // replace
$DB_USER = "xxx"; // replace
$DB_PASS = "xxx"; // replace
$conn = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if($conn->connect_errno > 0) {
die('Connection failed [' . $conn->connect_error . ']');
}
if(isset($_POST['Login'])){
$email = mysqli_real_escape_string($conn,$_POST['email']);
$length = 10;
$inviteCode = "";
$characters = "0123456789abcdefghijklmnopqrstuvwxyz";
for ($p = 0; $p < $length; $p++) {
$inviteCode .= $characters[mt_rand(10, strlen($characters))];
}
$query = mysqli_query($conn, "INSERT INTO `referrals` (`email`, `inviteCode`)
VALUES ('$email', '$inviteCode') ");
if($query){
echo "Success";
// or redirect with header, but remove the echo above if using header
}
else{
// echo "Sorry";
die('Error querying database. ' . mysqli_error($conn));
}
} // end brace for if(isset($_POST['Login']))