Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
263 views
in Technique[技术] by (71.8m points)

php - stop click counter program code on page refresh

I've problem of my click counter program. I want to stop running on pressing F5 or page refresh in browser which already connects with phpmyadmin database and i want it works when button click only...

<?php

        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="mypage"; // Database name 
        $tbl_name="counter"; // Table name 
        $message = "offer End";

        // Connect to server and select database.
        mysql_connect("$host", "$username", "$password")or die("cannot connect to server "); 
        mysql_select_db("$db_name")or die("cannot select DB");

        $sql="SELECT * FROM $tbl_name";
        $result=mysql_query($sql);
        $rows=mysql_fetch_array($result);
        $counter=$rows['visitors'];

        // if have no counter value set counter = 1
        if(empty($counter))
        {
                $counter=1;
                $sql1="INSERT INTO $tbl_name(visitors) VALUES('$counter')";
                $result1=mysql_query($sql1);
        }
        if($counter>1)
        {
                // count more value
                $addcounter=$counter-1;
                $sql2="update $tbl_name set visitors='$addcounter'";
                $result2=mysql_query($sql2);
                echo "You 're visitors No. ";
                echo $addcounter;

                mysql_close();
        }
        else 
        {
                //$counter=0;
                echo "<script type='text/javascript'>alert('$message');</script>";  
                mysql_close();
        }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form method="POST" action="">
    <input type="submit" name="insert" value="submit" onclick="" />
</form>

</body>
</html>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

As I said in comments and to show you a graphical way of doing this, use isset() with a conditional statement and wrap your entire executable code inside that and based on your named submit button.

I.e.:

<?php

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

        $host="localhost"; // Host name 

...

mysql_close();
        }

} // closing brace for  if(isset($_POST['insert']))

You can also use a header to redirect to the same page, inside the conditional statement.

I.e.:

header("Location: http://www.example.com/");
exit;

Sidenote: Make sure you're not outputting before header.


  • You should probably remove onclick="" from your submit button. There isn't a JS reference for it in your posted code.

Footnote(s):

Your present code is open to SQL injection. Use mysqli with prepared statements, or PDO with prepared statements, they're much safer.

  • mysql_* functions are deprecated and will be removed from future PHP releases.

Edit, full rewrite #2:

N.B.:

Replace http://www.yoursite.com/your_page.php below with your site and the page name you are using for the script.

Try either this one: (another below this one)

<?php

        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="mypage"; // Database name 
        $tbl_name="counter"; // Table name 
        $message = "offer End";

        // Connect to server and select database.
        mysql_connect("$host", "$username", "$password")or die("cannot connect to server "); 
        mysql_select_db("$db_name")or die("cannot select DB");

        $sql="SELECT * FROM $tbl_name";
        $result=mysql_query($sql);
        $rows=mysql_fetch_array($result);
        $counter=$rows['visitors'];

        // if have no counter value set counter = 1
        if(empty($counter))
        {
                $counter=1;
                $sql1="INSERT INTO $tbl_name(visitors) VALUES('$counter')";
                $result1=mysql_query($sql1);

        }
        if($counter>1)
        {
            if(isset($_POST['insert'])){
                // count more value
                $addcounter=$counter-1;
                $sql2="update $tbl_name set visitors='$addcounter'";
                $result2=mysql_query($sql2);
                echo "You 're visitors No. ";
                echo $addcounter;

                mysql_close();

        header("Location: http://www.yoursite.com/your_page.php");
        exit;
            } // closing brace for if(isset($_POST['insert']))
        }
        else 
        {
                //$counter=0;
                echo "<script type='text/javascript'>alert('$message');</script>";  
                mysql_close();

        }


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form method="POST" action="">
    <input type="submit" name="insert" value="submit" />
</form>

</body>
</html>

or this one:

<?php

        $host="localhost"; // Host name 
        $username="root"; // Mysql username 
        $password=""; // Mysql password 
        $db_name="mypage"; // Database name 
        $tbl_name="counter"; // Table name 
        $message = "offer End";

        // Connect to server and select database.
        mysql_connect("$host", "$username", "$password")or die("cannot connect to server "); 
        mysql_select_db("$db_name")or die("cannot select DB");

        $sql="SELECT * FROM $tbl_name";
        $result=mysql_query($sql);
        $rows=mysql_fetch_array($result);
        $counter=$rows['visitors'];

        // if have no counter value set counter = 1
        if(empty($counter))
        {
                $counter=1;
                $sql1="INSERT INTO $tbl_name(visitors) VALUES('$counter')";
                $result1=mysql_query($sql1);

        }

    if(isset($_POST['insert'])){
        if($counter>1)
        {

                // count more value
                $addcounter=$counter-1;
                $sql2="update $tbl_name set visitors='$addcounter'";
                $result2=mysql_query($sql2);
                echo "You 're visitors No. ";
                echo $addcounter;

                mysql_close();

        header("Location: http://www.yoursite.com/your_page.php");
        exit;
            }
        } // closing brace for if(isset($_POST['insert']))
        else 
        {
                //$counter=0;
                echo "<script type='text/javascript'>alert('$message');</script>";  
                mysql_close();

        }


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form method="POST" action="">
    <input type="submit" name="insert" value="submit" />
</form>

</body>
</html>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...