【问题标题】:$_POST isn't getting values from the form$_POST 没有从表单中获取值
【发布时间】:2017-07-25 06:11:44
【问题描述】:

$_POST 没有得到任何值,我已经尝试了很多已经提到的堆栈溢出过程,但它们对我不起作用。我试过打印$_POST 它是空的。我需要一些建议。请帮忙

它以前在 mysql 数据库中工作,但我试图将数据库更改为 sqlserver,现在它不工作,但我不明白我没有对这个特定代码进行任何更改,我也看到了它不受其他文件的影响。

空的情况没有错误我自己写的检查它是否为空,无论我是否提交数据它总是显示为空

我附上了一些与此相关的代码。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<?php
ob_start();
session_start();
require_once 'config.php'; 
?>
<?php 
	if(empty($_POST)){
		echo "hello";
		try {
			$user_obj = new Cl_User();
			$data = $user_obj->registration( $_POST );
			if($data){
				$_SESSION['success'] = USER_REGISTRATION_SUCCESS;
				header('Location: index.php');exit;
			}
		} catch (Exception $e) {
			$_SESSION['error'] = $e->getMessage();
		}
	}
?>
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="php quiz script, php quiz code, php quiz application, quiz php code, php quiz system, online quiz using php, quiz using php, how to make quiz in php, quiz system in php, php programming quiz, online quiz using php and sqlsrv, create online quiz using php and sqlsrv, create quiz using php sqlsrv, php quiz script free">
    <meta name="keywords" content="php quiz script, php quiz code, php quiz application, quiz php code, php quiz system, online quiz using php, quiz using php, how to make quiz in php, quiz system in php, php programming quiz, online quiz using php and sqlsrv, create online quiz using php and sqlsrv, create quiz using php sqlsrv, php quiz script free">
    <title>PHP Quiz Script</title>
    <link href='http://fonts.googleapis.com/css?family=Pacifico' rel='stylesheet' type='text/css'>
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/font-awesome.min.css" rel="stylesheet">
    <link href="css/login.css" rel="stylesheet">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
    
    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <script src="js/jquery.min.js"></script>
    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="js/bootstrap.min.js"></script>
  </head>
  <body>
	<div class="container">
		<div class="login-form">
			<?php require_once 'templates/message.php';?>
			
			<h1 class="text-center">PHP Quiz Application</h1>
			<div class="form-header">
				<i class="fa fa-user"></i>
			</div>
			<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" class="form-register" role="form" id="register-form">
				<div>
					<input name="name" id="name" type="text" class="form-control" placeholder="Name"> 
					<span class="help-block"></span>
				</div>
				<div>
					<input name="email" id="email" type="email" class="form-control" placeholder="Email address" > 
					<span class="help-block"></span>
				</div>
				<div>
					<input name="password" id="password" type="password" class="form-control" placeholder="Password"> 
					<span class="help-block"></span>
				</div>
				<div>
					<input name="confirm_password" id="confirm_password" type="password" class="form-control" placeholder="Confirm Password"> 
					<span class="help-block"></span>
				</div>
				<button class="btn btn-block bt-login" type="submit" id="submit" name="submit">Sign Up</button>
			</form>
			<div class="form-footer">
				<div class="row">
					<div class="col-xs-6 col-sm-6 col-md-6">
						<i class="fa fa-lock"></i>
						<a href="forget_password.php"> Forgot password? </a>
					
					</div>
					
					<div class="col-xs-6 col-sm-6 col-md-6">
						<i class="fa fa-check"></i>
						<a href="index.php"> Sign In </a>
					</div>
				</div>
			</div>
		</div>
	</div>
	<!-- /container -->

	
    <script src="js/jquery.validate.min.js"></script>
    <script src="js/register.js"></script>
  </body>
</html>
<?php unset($_SESSION['success'] ); unset($_SESSION['error']);  ?>    

<?php

	$server="NIKUNJ";
			$ci = array("Database" => "My database","UID"=>"sa", "PWD"=>"sql@123","Characterset"=>"UTF-8") or die( "check db connect1" );
			$conn = sqlsrv_connect($server,$ci) or die ( "check db connect2" ) ;

function mssql_escape($str)
{
   if(get_magic_quotes_gpc())
   {
    $str= stripslashes($str);
   }
   return str_replace("'", "''", $str);
}

function mssql_insert_id() { 
    $id = 0; 
    $res = sqlsrv_query("SELECT @@identity AS id"); 
    if ($row = sqlsrv_fetch_array($res, MSSQL_ASSOC)) { 
        $id = $row["id"]; 
    } 
    return $id; 
} 

class Cl_User
{
	/**
	 * @var will going contain database connection
	 */
	protected $_con;
	
	/**
	 * it will initalize DBclass
	 */
	public function __construct()
	{
		$db = new Cl_DBclass();
		$this->_con = $db->con;
	}
	
	/**
	 * this will handles user registration process
	 * @param array $data
	 * @return boolean true or false based success 
	 */
	public function registration( array $data )
	{
		echo "hello";
		if( !empty( $data ) ){
			
			// Trim all the incoming data:
			$trimmed_data = array_map('trim', $data);
			
			
			
			// escape variables for security
			$name = mssql_escape( $trimmed_data['name'] );
			$password = mssql_escape( $trimmed_data['password'] );
			$cpassword = mssql_escape( $trimmed_data['confirm_password'] );
			
			
			// Check for an email address:
			if (filter_var( $trimmed_data['email'], FILTER_VALIDATE_EMAIL)) {
				$email = mssql_escape( $trimmed_data['email']);
			} else {
				throw new Exception( "Please enter a valid email address!" );
			}
			
			
			if((!$name) || (!$email) || (!$password) || (!$cpassword) ) {
				throw new Exception( FIELDS_MISSING );
			}
			if ($password !== $cpassword) {
				throw new Exception( PASSWORD_NOT_MATCH );
			}
			$password = md5( $password );
			$query = "INSERT INTO users (id, name, email, password, created) VALUES (NULL, '$name', '$email', '$password', CURRENT_TIMESTAMP)";
			if(sqlsrv_query($this->_con, $query)){
				sqlsrv_close($this->_con);
				return true;
			};
		} else{
			throw new Exception( USER_REGISTRATION_FAIL );
		}
	}
	/**
	 * This method will handle user login process
	 * @param array $data
	 * @return boolean true or false based on success or failure
	 */
	public function login( array $data )
	{
		$_SESSION['logged_in'] = false;
		if( !empty( $data ) ){
			// Trim all the incoming data:
			$trimmed_data = array_map('trim', $data);
			
			// escape variables for security
			$email = mssql_escape( $this->_con,  $trimmed_data['email'] );
			$password = mssql_escape( $this->_con,  $trimmed_data['password'] );
			if((!$email) || (!$password) ) {
				throw new Exception( LOGIN_FIELDS_MISSING );
			}
			$password = md5( $password );
			$query = "SELECT id, name, email, created FROM users where email = '$email' and password = '$password' ";
			$result = sqlsrv_query($this->_con, $query);
			$data = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC);
			$count = SQLSRV_num_rows($result);
			echo $count;
			sqlsrv_close($this->_con);
			if( $count == 1){
				$_SESSION = $data;
				$_SESSION['logged_in'] = true;
				return true;
			}else{
				throw new Exception( LOGIN_FAIL );
			}
		} else{
			throw new Exception( LOGIN_FIELDS_MISSING );
		}
	}
	
	/**
	 * This will shows account information and handles password change
	 * @param array $data
	 * @throws Exception
	 * @return boolean
	 */
	
	public function account( array $data )
	{
		if( !empty( $data ) ){
			// Trim all the incoming data:
			$trimmed_data = array_map('trim', $data);
			
			// escape variables for security
			$password = mssql_escape( $this->_con, $trimmed_data['password'] );
			$cpassword = $trimmed_data['confirm_password'];
			$user_id = $_SESSION['id'];
			if((!$password) || (!$cpassword) ) {
				throw new Exception( FIELDS_MISSING );
			}
			if ($password !== $cpassword) {
				throw new Exception( PASSWORD_NOT_MATCH );
			}
			$password = md5( $password );
			$query = "UPDATE users SET password = '$password' WHERE id = '$user_id'";
			if(sqlsrv_query($this->_con, $query)){
				sqlsrv_close($this->_con);
				return true;
			}
		} else{
			throw new Exception( FIELDS_MISSING );
		}
	}
	
	/**
	 * This handle sign out process
	 */
	public function logout()
	{
		session_unset();
		session_destroy();
		session_start();
		$_SESSION['success'] = LOGOUT_SUCCESS;
		header('Location: index.php');
	}
	
	/**
	 * This reset the current password and send new password to mail
	 * @param array $data
	 * @throws Exception
	 * @return boolean
	 */
	public function forgetPassword( array $data )
	{
		if( !empty( $data ) ){
			
			// escape variables for security
			$email = mssql_escape( $this->_con, trim( $data['email'] ) );
			
			if((!$email) ) {
				throw new Exception( FIELDS_MISSING );
			}
			$password = $this->randomPassword();
			$password1 = md5( $password );
			$query = "UPDATE users SET password = '$password1' WHERE email = '$email'";
			if(sqlsrv_query($this->_con, $query)){
				sqlsrv_close($this->_con);
				$to = $email;
				$subject = "New Password Request";
				$txt = "Your New Password ".$password;
				$headers = "From: rahul.ranjan72@hotmail.com" . "\r\n" .
						"CC:rahul.ranjan72@hotmail.com";
					
				mail($to,$subject,$txt,$headers);
				return true;
			}
		} else{
			throw new Exception( FIELDS_MISSING );
		}
	}
	
	/**
	 * This will generate random password
	 * @return string
	 */
	
	private function randomPassword()
	{
		$alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
		$pass = array(); //remember to declare $pass as an array
		$alphaLength = strlen($alphabet) - 1; //put the length -1 in cache
		for ($i = 0; $i < 8; $i++) {
			$n = rand(0, $alphaLength);
			$pass[] = $alphabet[$n];
		}
		return implode($pass); //turn the array into a string
	}
	
	public function pr($data = '' )
	{
		echo "<pre>"; print_r($data); echo "</pre>";
	}
	
	public function getCategory()
	{
		$query = "SELECT * FROM categories";
		$results = sqlsrv_query($conn, $query)  or die(SQLSRV_errors());
		$categories = array();
		while ( $result = sqlsrv_fetch_array($result,SQLSRV_FETCH_ASSOC) ) {
			echo $result['id'];
			$categories[$result['id']] = $result['category_name'];
		}
		return $categories;
	}
	
	public function getQuestions(array $data)
	{
		if( !empty( $data ) ){
				
			// escape variables for security
			$category_id = mssql_escape( $this->_con, trim( $data['category'] ) );
			if((!$category_id) ) {
				throw new Exception( FIELDS_MISSING );
			}
			$user_id = $_SESSION['id'];
			$query = "INSERT INTO scores ( user_id,right_answer,category_id)VALUES ( '$user_id',0,'$category_id')";
			sqlsrv_query( $this->_con, $query);
			$_SESSION['score_id'] = mssql_insert_id();
			$results = array();
			$number_question = $_POST['num_questions'];
			$total_question = $_POST['total_num_questions'];
			$row = sqlsrv_query( $this->_con, "select * from questions where category_id=$category_id ORDER BY RAND()");
			$check=SQLSRV_num_rows($row);
			if($check<$total_question)
				$rowcount=$check;
			else
			$rowcount = $total_question;
			$remainder = $rowcount/$number_question;
			$results['number_question'] = $number_question;
			$results['remainder'] = $remainder;
			$results['rowcount'] = $rowcount;
			while ( $result = SQLSRV_FETCH_ASSOC($row) ) {
				$results['questions'][] = $result;
			}
			sqlsrv_close($this->_con);
			return $results;
		} else{
			throw new Exception( FIELDS_MISSING );
		}
	}
	
	public function getAnswers(array $data)
	{
		if( !empty( $data ) ){
			$right_answer=0;
			$wrong_answer=0;
			$unanswered=0;
			$total_question = $_POST['total_num_questions'];
			$keys=array_keys($data);
			$order=join(",",$keys);
			$query = "select id,answer from questions where id IN($order) ORDER BY FIELD(id,$order)";
			$response=sqlsrv_query( $this->_con, $query)   or die(SQLSRV_errors());
			
			$user_id = $_SESSION['id'];
			$score_id = $_SESSION['score_id'];
			while($result=sqlsrv_fetch_array($response)){
				if($result['answer']==$_POST[$result['id']]){
					$right_answer++;
				}else if($data[$result['id']]=='smart_quiz'){
					$unanswered++;
				}
				else{
					$wrong_answer++;
				}
			}
			$results = array();
			$results['right_answer'] = $right_answer;
			$results['wrong_answer'] = $wrong_answer;
			$results['unanswered'] = $unanswered;
			$update_query = "update scores set right_answer='$right_answer', wrong_answer = '$wrong_answer', unanswered = '$unanswered' where user_id='$user_id' and id ='$score_id' ";
			sqlsrv_query( $this->_con, $update_query)   or die(SQLSRV_errors());
			sqlsrv_close($this->_con);
			return $results;
		}	
	}
}

<?php
/**
@author vetripandi
@copyright http:www.vetbossel.in
 */

require_once 'messages.php';

//site specific configuration declartion

define( 'DB_HOST', 'NIKUNJ' );
define( 'DB_USERNAME', 'sa');
define( 'DB_PASSWORD', 'sql@123');
define( 'DB_NAME', 'user_login');

function __autoload($class)
{
	$parts = explode('_', $class);
	$path = implode(DIRECTORY_SEPARATOR,$parts);
	require_once $path . '.php';
}

its the image of the data i am sending but $_POST is not getting any values and nothing happens after signup button is pressed

【问题讨论】:

  • 您必须检查if(!empty($_POST)),但您使用的是if(empty($_POST))
  • if(!empty($_POST) && isset($_POST['submit'])){ ..}
  • !empty 我已经尝试过了,但它也没有以这种方式运行,所以我只是检查它是否为空,然后它是否正在运行............ ......Isset 我已经检查过,但我认为它没有设置提交按钮
  • 避免使用action="&lt;?php echo $_SERVER['PHP_SELF']; ?&gt;",因为它容易出现漏洞。而是写当前页面的名称。如果您需要灵活的表单操作,请考虑先验证值。
  • 值正在被 jquery 验证,如果你能看到代码,我肯定会尝试写文件名,如果它有帮助的话

标签: php jquery html css sql-server


【解决方案1】:

只有当$_POST 数组为空时,您的代码才会运行。

将您的代码更改为以下内容。

if(!empty($_POST))

除此之外,我认为没有问题。

【讨论】:

  • 不,在此之前它不是空的,只是为了检查目的而做的
【解决方案2】:

最好将提交按钮作为服务器端代码执行的关注中心。

因此检查 $_POST 数据是否已使用isset 发送:

if (isset($_POST['submit']))
{
    // the data has successfully been sent
}

【讨论】:

    【解决方案3】:

    你确定没问题?

    if(empty($_POST))
    

    如果 $_POST 为空,则始终执行代码

    if(!empty($_POST))
    

    当$_POST 为空时执行

    【讨论】:

    • 抱歉,我正在尝试我的代码是否在 $_POST 中获取任何值.....如果我不清空它将不会执行代码
    • @NikunjMangla 使用 var_dump($_POST) 会得到什么?发送表格后?
    • array(0) { } 这个值在提交前后显示.....感觉注册按钮没有提交值
    【解决方案4】:

    这可能不是你的问题,但一般提交按钮是

    <input type="submit" value="submit">
    

    而不是

    <button type="submit">Submit</button>
    

    发件人:W3schools.com

    【讨论】:

    • 正如我在我的帖子中所说的那样,它以前可以工作,现在不是这样了
    • 这只是我的原始代码.....你想看看一个在mysql中实现的正在运行的代码
    • 我很快尝试了你的代码,没有Sqlserver,当我点击提交时,什么也没发生。我把它改成了一个,它做了一些事情。
    • 它做了什么,因为我也尝试将其更改为输入然后也没有发生任何事情
    • 好吧,当我点击
    【解决方案5】:

    我弄错了。我不知道如何,但表单的值不仅被转移到这个 php 文件,而且还在另一个 php 文件名 check-email.php 中,这是我的项目的一部分,在 register.php 的任何地方都没有提到。

    我通过看到一些与堆栈溢出问题相关的帖子了解了这个问题,他说要检查你的 PHP_error_log 和 Apache 错误日志。错误在那里清楚地说明了。通过对 check-email.php 进行一些更改,它现在工作正常。还是谢谢大家的帮助

    【讨论】:

      猜你喜欢
      • 2014-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多