Php 当按下提交按钮时,如何停止重新加载页面?

Php 当按下提交按钮时,如何停止重新加载页面?,php,html,forms,Php,Html,Forms,我目前正在尝试创建一个系统,在这个系统中,我的网站的用户可以向上/向下投票。基本上,我将使用以下html <form method='post'> <input type='submit' name='up' value='up'> <input type='submit' name='down' value='down'> </form> 结合此php: <?php if( isset($_POST['up']) ){ $co

我目前正在尝试创建一个系统,在这个系统中,我的网站的用户可以向上/向下投票。基本上,我将使用以下html

<form method='post'>
<input type='submit' name='up' value='up'>
<input type='submit' name='down' value='down'>
</form>

结合此php:

<?php

if( isset($_POST['up']) ){

  $con = mysqli_connect("localhost","user","password");

  if (!$con)
  {
    die('Could not connect: ' . mysqli_connect_error());
  }

  $postid = "";
  $userid = $_SERVER['REMOTE_ADDR'];


  $query = "
  INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '+1')";

  mysqli_query($con, $query);

  mysqli_close($con);

  }

elseif( isset($_POST['down']) ){


  $con = mysqli_connect("localhost","user","password");

  if (!$con)
  {
    die('Could not connect: ' . mysqli_connect_error());
  }


  $postid = "";
  $userid = $_SERVER['REMOTE_ADDR'];


  $query = "
  INSERT INTO database.table (postid, ipaddress, vote) VALUES ('$postid', '$userid', '-1')";
  mysqli_query($con, $query);

  mysqli_close($con);
}

?>

我意识到您在问题的任何地方都没有提到jQuery,但是由于您无法使用纯HTML+PHP实现您想要做的事情,我认为您迟早会使用JS来实现这一效果。jQuery非常适合这种情况:

HTML部分

<a class="voter" data-vote="up">Vote up</a>
<a class="voter" data-vote="down">Vote down</a>
$voteType = $_POST['voteType'];

switch($voteType){
    case 'up':
    // Do something
        break;
    case 'down':
    // Do something else
        break;
}
PHP部分
$voteType = $_POST['voteType'];

switch($voteType){
    case 'up':
    // Do something
        break;
    case 'down':
    // Do something else
        break;
}

我知道您在问题的任何地方都没有提到jQuery,但是由于您无法使用纯HTML+PHP实现您想要做的事情,因此我假设您迟早会使用JS来实现这一效果。jQuery非常适合这种情况:

HTML部分

<a class="voter" data-vote="up">Vote up</a>
<a class="voter" data-vote="down">Vote down</a>
$voteType = $_POST['voteType'];

switch($voteType){
    case 'up':
    // Do something
        break;
    case 'down':
    // Do something else
        break;
}
PHP部分
$voteType = $_POST['voteType'];

switch($voteType){
    case 'up':
    // Do something
        break;
    case 'down':
    // Do something else
        break;
}

您将需要使用Ajax,这是不可能的,因为只有PHPwarning您的代码极易受到sql注入攻击!嗨,谢谢你的回复。Daniel,你能解释一下为什么我容易受到sql注入的攻击吗?@JohnSmith,因为在将变量放入sql语句之前,你不能对它们进行转义。更安全的方法是使用预先准备好的语句,而不是一开始就摆弄转义。您需要使用Ajax,只有PHP是不可能的。警告您的代码极易受到sql注入攻击!嗨,谢谢你的回复。Daniel,你能解释一下为什么我容易受到sql注入的攻击吗?@JohnSmith,因为在将变量放入sql语句之前,你不能对它们进行转义。更安全的方法是使用预先准备好的语句,而不是一开始就摆弄转义。感谢您的帮助-我将进一步研究jQuery。正如其他海报所建议的那样,这种方法比使用Ajax更可取吗?这就是Ajax。对
$.post()
的调用是jQuery中的常规Ajax调用。感谢您的帮助-我将进一步研究jQuery。正如其他海报所建议的那样,这种方法比使用Ajax更可取吗?这就是Ajax。对
$.post()
的调用是jQuery中的常规Ajax调用。