Phpmyadmin php寄存器系统错误
我试图使用xampp在php中创建一个注册页面,但我遇到了一个问题。运行php文件时,会出现以下错误:Phpmyadmin php寄存器系统错误,phpmyadmin,xampp,registration,php,Phpmyadmin,Xampp,Registration,Php,我试图使用xampp在php中创建一个注册页面,但我遇到了一个问题。运行php文件时,会出现以下错误: <input type='submit' name='submit' value='register' /> </form> 注意:未定义的索引:C:\xampp\htdocs\register.php中的用户名 第3行 <input type='submit' name='submit' value='register' /> <
<input type='submit' name='submit' value='register' />
</form>
注意:未定义的索引:C:\xampp\htdocs\register.php中的用户名
第3行
<input type='submit' name='submit' value='register' />
</form>
注意:未定义的索引:C:\xampp\htdocs\register.php中的username
在线4
<input type='submit' name='submit' value='register' />
</form>
注意:未定义的索引:C:\xampp\htdocs\register.php中的UserMail
第5行
<input type='submit' name='submit' value='register' />
</form>
注意:C:\xampp\htdocs\register.php中未定义的索引:UserPassword
第6行
<input type='submit' name='submit' value='register' />
</form>
注意:未定义的索引:C:\xampp\htdocs\register.php中的UserTel
第7行
<input type='submit' name='submit' value='register' />
</form>
警告:require(class.phpmailer.php)[function.require]:未能
开放流:C:\xampp\htdocs\register.php中没有这样的文件或目录
在线24
<input type='submit' name='submit' value='register' />
</form>
致命错误:require()[function.require]:打开失败
中的“class.phpmailer.php”(include_path=”;C:\xampp\php\PEAR)
第24行的C:\xampp\htdocs\register.php
<input type='submit' name='submit' value='register' />
</form>
我的php文件register.php:
<?php
$username=$_POST['UserName'];
$usersurname=$_POST['UserSurname'];
$usermail=$_POST['UserMail'];
$userpass=$_POST['UserPassword'];
$usertelephone=$_POST['UserTel'];
$con = mysql_connect("localhost","root","rockenpeace");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("dbe", $con);
mysql_query("INSERT INTO user (UserName,UserSurname,UserMail, UserPassword, UserTel)
VALUES('$username','$usersurname','$usermail','$userpass','$usertelephone')");
mysql_close($con);
try
{
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->Mailer = "smtp";
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->CharSet="utf-8";
$mail->Username = "user@gmail.com";
$mail->Password = "password";
$mail->From = "user@gmail.com";
$mail->FromName="DBE Yazılım";
$mail->AddAddress($_POST['usermail']);
$mail->Subject = "Registration Information";
$mail->Body = "Hello your password is " . $userpass;
//$mail->AddAttachment($path);
$mail->Send();
echo 'Message has been sent.';
}
catch(Exception $e)
{
echo 'hata'.$e->getMessage();
}
header("location:confirmation.php"); ?>
<input type='submit' name='submit' value='register' />
</form>
嗯,看起来
<input type='submit' name='submit' value='register' />
</form>
a) 您的$\u POST
superglobal是空的(或者至少不包含您认为的内容)。在这种情况下,这是第一件值得怀疑的事情。运行print\r($\u POST)
查看其中的内容
<input type='submit' name='submit' value='register' />
</form>
假设POST/GET VAR即将到来是不安全的。通过isset()
检查此项,并检查它们是否包含您认为应该包含的内容。简言之,我们谈论的是验证
<input type='submit' name='submit' value='register' />
</form>
b) 听起来你的包含路径是错误的。同样,这很容易检查。运行echo file_exists('path/to/include')
-如果没有看到1
,则路径错误用于验证$\u POST数组中是否存在密钥
<input type='submit' name='submit' value='register' />
</form>
对于失败的包含,这意味着文件不在您的中,因此您可以使用(注意这可能会影响其他相对包含),或者使用绝对路径
<input type='submit' name='submit' value='register' />
</form>
最后,在输入变量上使用,否则很容易受到SQL注入的影响
<input type='submit' name='submit' value='register' />
</form>
样本
if (!isset($_POST['userName'], $_POST['key2'], .....)) {
// handle this error, you don't have the correct inputs
} else {
// Validate inputs
// Escape inputs prior to inserting into database
$username = mysql_real_escape_string($_POST['userName']);
...
...
// Your queries
}
<input type='submit' name='submit' value='register' />
</form>
如果出现以下情况,请签入其表单操作为此页面的页面
<input type='submit' name='submit' value='register' />
</form>
该页面中输入标记的name属性与您在此处尝试检索的内容相同
<input type='submit' name='submit' value='register' />
</form>
像
<input type='submit' name='submit' value='register' />
</form>
--更新
<input type='submit' name='submit' value='register' />
</form>
在:
<input type='submit' name='submit' value='register' />
</form>
带有empty()
的示例:
<input type='submit' name='submit' value='register' />
</form>
if(isset($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is not set.");
if(!empty($_POST['UserName'])) $username = $_POST['UserName'];
else die("Username variable is empty.");
您应该考虑的另一件事是,在SQL查询中使用字符串之前,应该使用
<input type='submit' name='submit' value='register' />
</form>
例如:
<input type='submit' name='submit' value='register' />
</form>
$username = mysql_real_escape_string($_POST['UserName']);
您可能还希望将与转义结合使用。在php中运行print\r($\u POST)时,它会写入数组()。抱歉,我是php初学者。如果我犯了错误,请警告我。您刚刚提供了所有您的smtp信息。我为您编辑了它。如果它正在编写数组(),则没有表单数据传递给它。您也应该向我们显示您的标记。@Martin太糟糕了,它仍在修订历史记录中…=)很抱歉,我无法添加整个html标记:)但是我在我的html页面中添加了输入标记:当我运行echo file_exists('path/to/include')时,我看不到任何更改。如果
file_exists(…)
没有输出1
,那么文件的路径是错误的,正如我所说的,如果(!isset($\u POST['userName'),…)当我使用if(设置($\u POST['UserName'))$UserName=$\u POST['UserName'];否则($UserName变量未设置。)时;它会写死亡消息。你认为我在html页面中的输入标记有错误吗?我的输入标记:@rockenpeace是。我已经用解决方案编辑了我的答案,请看顶部。我已根据$\u帖子名称更改了名称属性。例如,name=“UserName”但它仍然给出了死亡信息。我在html页面中重写了名称属性,但仍然有相同的错误。您是否将变量包含在
中?是的,我已将该表单包含在内:但我的方法部分与您不同。您的方法是get将其更改为post method=“post”
我已将我的方法从“获取”更改为“发布”,但仍然存在相同的错误。
<input type='submit' name='submit' value='register' />
</form>