PHP $ _GET和$ _POST代码不起作用

时间:2017-05-26 23:15:15

标签: php html mysql sql variables

我有一些PHP代码,执行时代码不会将值发送到我网站上的其他PHP页面。我的权限是755。

第1页:

       <!DOCTYPE html>
<html lang="en">
<head>
  <title>Bay Area Buckets</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
  <style>

  .navbar {
    margin-bottom: 0;
    background-color: #ff4d4d;
    z-index: 9999;
    border: 0;
    font-size: 12px !important;
    line-height: 1.42857143 !important;
    letter-spacing: 4px;
    border-radius: 0;
}

.navbar li a, .navbar .navbar-brand {
    color: #fff !important;
}

.navbar-nav li a:hover, .navbar-nav li.active a {
    color: #f4511e !important;
    background-color: #fff !important;
}

.navbar-default .navbar-toggle {
    border-color: transparent;
    color: #fff !important;
}
.resize {
   border: 2px solid;
    padding: 20px; 

    resize: vertical;
    overflow: auto;


}
textarea {
    width: 100%;
}

  </style>
</head>
<body>

 <nav class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
     <a href="index"><img src="https://pbs.twimg.com/media/CnvlpmKUAAArtx_.png:large" alt="Logo" height="60" width="60"></a> 
    </div>
    <div class="collapse navbar-collapse" id="myNavbar">
      <ul class="nav navbar-nav navbar-right">

     <li><a href="index">HOME</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
        <li><a href="about">ABOUT</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
        <li><a href="hats">HATS</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
        <li><a href="socialMedia">SOCIAL MEDIA</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
        <li><a href="cart">Cart</a></li>

      </ul>
    </div>
  </div>
</nav>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
    <div>
        <center><h1 ><span style="color:#ff6666;">Contact Us</span></h1></center>
    </div>
<br/>
<br/>
<br/>
<?php
echo '<div class="col-md-3"></div>
<div class="col-md-6">
    <form action="contact.php" method="post">
    Name:
    <br>
    <input type="text" name="name"/ >
    Email: 
    <br>
    <input type="text" name="email"/>
    Message:
    <br>
    <textarea class="riseize" value="text" name="message"></textarea>
    <br>
    <center><input type="submit" value="submit"/></center>
    </form>
</div>
</div>
<div class="col-md-3"></div>'
?>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</div>
</body>
</html>

调用contact.php,即:

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$sql = "INSERT INTO help (name, email, message) VALUES ( '$name' , '$email' , '$message' )";

if (!mysql_query($sql)) {
die ('Error: ' . mysql_error());
}
else {
echo "<html><script language='JavaScript'> alert('Thank you for your submission.'),window.location = 'index'</script></html>";
};

我认为问题是get $ _GET和$ _POST,因为它执行contact.php并调用变量值,但它没有从第1页获取值。

3 个答案:

答案 0 :(得分:1)

您的表单使用method="post",因此输入将发送到$_POST数组中的PHP脚本

<form action="contact.php" method="post" />
                                   ^^^^

因此,请更改这两行以使用$_POST

$name = $_POST['name'];
$email = $_POST['email'];

但是

  

您的脚本面临SQL Injection Attack的风险   看看Little Bobby Tables偶然发生了什么   if you are escaping inputs, its not safe!   使用prepared parameterized statements

  

每次使用the mysql_    新代码中的数据库扩展    的 this happens    它被弃用了很多年,并且在PHP7中永远消失了。   如果您只是学习PHP,请花些精力学习PDOmysqli数据库扩展和准备好的语句。   Start here

答案 1 :(得分:1)

好像你正试图通过文件contact.php传递使用post来获取名称和电子邮件

如果你想通过邮寄方式传递你的价值,你必须通过邮寄

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

如果你想这样做,你必须通过获取

<form action="contact.php" method="post" />

在您的表单中,您正在使用帖子

答案 2 :(得分:1)

打开表单时关闭表单。变化:

./reducers/index.js

为:

<form action="contact.php" method="post" />

<form action="contact.php" method="post"> 关闭元素,基本上你有

/

然后你所有的其他输入都没有。

(提到的其他问题也属实,但这就是你的表格为空的原因)

在浏览器中,您还应该使用开发者控制台(位置和选项因浏览器而异),以查看请求的发送和处理方式。 https://wpscholar.com/blog/view-form-data-in-chrome/这将首先向您显示表单发送的问题,或PHP处理它(例如,如果未发送值,您知道它不是PHP问题)。

事实证明,在这种情况下,您进行了重写,删除了<form action="contact.php" method="post"></form> ,同时删除了参数。直接向页面发出请求,绕过重写规则解决了这个问题。

.php