Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重定向到另一页的If-else语句_Php_Mysql_Sql_If Statement - Fatal编程技术网

Php 重定向到另一页的If-else语句

Php 重定向到另一页的If-else语句,php,mysql,sql,if-statement,Php,Mysql,Sql,If Statement,我对PHP/SQL很在行,所以如果有任何帮助,我将不胜感激 基本上,我有一个表单,它将值“firstname”和“姓氏”发布到另一个页面。我想让该页面做的是检查用户名是否已经在“Members”表中。如果是,我希望它继续加载此页面,但如果它们不在数据库中,我希望查看器重新定向到现有的注册页面 这是我一直在研究的代码,我不确定我是否朝着正确的方向前进 <?php $con = mysql_connect("localhost","site","xxxxxxxx"); if (!$con)

我对PHP/SQL很在行,所以如果有任何帮助,我将不胜感激

基本上,我有一个表单,它将值“firstname”和“姓氏”发布到另一个页面。我想让该页面做的是检查用户名是否已经在“Members”表中。如果是,我希望它继续加载此页面,但如果它们不在数据库中,我希望查看器重新定向到现有的注册页面

这是我一直在研究的代码,我不确定我是否朝着正确的方向前进

<?php
$con = mysql_connect("localhost","site","xxxxxxxx");
if (!$con)
   {
   die('Could not connect: ' . mysql_error());
   }

mysql_select_db("site", $con);

$query = "SELECT * FROM Members WHERE firstname='$_POST[firstname]' and surname='$_POST[surname]'";  
$result = mysql_query($query);

if ($result==$something)
   {
   echo "great success"; //user continues loading page
   }
else
   {
   echo "fail"; //user is redirected to sign up page
   }
?>


另外,您的查询很容易进行SQL注入,只需在else分支中添加一个
头(“Location:host/site.php”)
函数调用,然后添加一个die()

$rows = mysql_num_rows($results);

if ($rows == 1)
{
   echo "login successful"; //user continues loading page
}
else
{
   header ('location: signup.php'); //user is redirected to sign up page
}

使用此功能可以达到以下目的:

<?php

$con = mysql_connect( "localhost", "site", "xxxxxxxx" );
if ( !$con ) {
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("site", $con);
第二,我没有更改它,但您需要删除
*
,只输入要加载的特定值。即使这些都是值,仍然手动写入它们

$query = "SELECT * FROM Members WHERE firstname='" . $firstname . "' and surname=' " . $surname. "'";  
$result = mysql_query( $query );
第三,您可以检查行计数,如果您得到一些值,则有一个包含这些变量的条目

if ( mysql_num_rows($result) >= 1 ) {
    // the page you want
} else {
    // redirect user to another page
    header( "Location: signup.php" ); die;
}

?>
编辑:


考虑向查询中添加一些
唯一的
请求。如果两个用户的姓名和姓氏相同,或者一个新用户想要加入,但名称和姓氏已经在数据库中,会发生什么情况…

您应该向该位置添加完整的url,因为HTTP需要这样做。大多数浏览器都能正确地解释这一点,但添加主机是错误的cleaner@Sylence如果文件存在于同一文件夹中,该怎么办字段值由一个绝对URI组成。“为什么选择向下投票?”?有些人真的很可怜。你在上面的代码中看到了什么错误?让我恼火的是没有解释的否决票。我们都是来学习的。因为这就是你引导用户进入另一个页面的方式?感谢各位的回复,以及SQL注入的提示。它现在工作得很好:)我没有足够的专家来和你争论,但我打赌如果我真的尝试的话,我可以通过
strip_标签
来获得SQL注入。这就是为什么我说至少要做
。还有很多预防措施要做:)
$firstname = strip_tags( $_POST[ 'firstname' ] );
$surname = strip_tags( $_POST[ 'surname' ] );
$query = "SELECT * FROM Members WHERE firstname='" . $firstname . "' and surname=' " . $surname. "'";  
$result = mysql_query( $query );
if ( mysql_num_rows($result) >= 1 ) {
    // the page you want
} else {
    // redirect user to another page
    header( "Location: signup.php" ); die;
}

?>