benhowdle89
benhowdle89

Reputation: 37494

Disable all input buttons on page if no PHP session exists

I'm doing a site with a voting system. What i want is to disable all input buttons (the ability to vote) if the user isnt logged in (ie. a session doesnt exist). How do i do a check in PHP at the top of the page and then allow/disallow the input buttons? Would i use CSS or jQuery?

Upvotes: 2

Views: 2723

Answers (3)

Mārtiņš Briedis
Mārtiņš Briedis

Reputation: 17762

Somewhere in the code check if the session is not set:

if(!isset($_SESSION['some_key'])){
   $disable = true;
}else{
   $disable = false;
}

Then, in the html:

<input type="radio" name="" value=""<?=($disable ? " disabled=\"disabled\"" : "");?>/> Vote 1
<input type="radio" name="" value=""<?=($disable ? " disabled=\"disabled\"" : "");?>/> Vote 2
<input type="radio" name="" value=""<?=($disable ? " disabled=\"disabled\"" : "");?>/> Vote 3

But you still have to check at the serverside before you accept the vote, if the person has voted before, because this form can be edited easily to post the data again and again.

Upvotes: 3

Senad Meškin
Senad Meškin

Reputation: 13756


<?php if(!isset($_SESSION['logged']))
{
  echo "<script language=\"javascript\">";
  echo "$(document).ready(function() 
   {
      $('input[type=submit]').each(function() { this.attr('disabled', 'disabled') });
   });</script>"

}
?>

Upvotes: 1

Crozin
Crozin

Reputation: 44386

You should dynamically generate a correct HTML code. Something like this:

<?php if(isset($_SESSION['logged'])): ?>
    <form> voting form </form>
<?php else: ?>
    <p><a href="...">Sign in</a> to vote</p>
<?php endif ?>

You should also check whether user is logged in before you process a form:

if (isset($_SESSION['logged']) && isset($_POST['vote'])) {
    // process form
}

Upvotes: 0

Related Questions