problem mixing php and html

Ask about general coding issues or problems here.

Moderators: macek, egami, gesf

beginner123
New php-forum User
New php-forum User
Posts: 33
Joined: Fri Jan 20, 2012 10:39 am

problem mixing php and html

Postby beginner123 » Mon Nov 12, 2012 10:52 am

i am creating a website that sells products and i have just finished adding a log in function.
So certain pages are only available if you log in but if you enter the url of the page you can see it without logging in.
I know i can solve this problem be adding this code:

Code: Select all

if(isset($_SESSION['signed_in']) != true)
{
   //the user is not signed in
   echo 'Sorry, you have to be <a href="/musicwebsite/signin.php">signed in</a> to view this page.';
}
else
{

//rest of code
}

but my problem is i have mixed php with html so adding the above code is a bit difficult because the page still displays any html code.
is there anyway to solve this or will i have to convert all html code to php?

here is an example of a page with php and html:

Code: Select all

<!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=windows-1252" />
<title>Products</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>

<div id="main_container">

   <div id="header">
    <div class="logo">
    <a href="index.php"><img src="images/logo.gif" alt="" title="" border="0" /></a>
    </div>
   
    </div>
   
<?php

@$db = new mysqli( 'localhost', 'root', "", 'k00127082');

if (mysqli_connect_errno()) {
echo 'error connecting to db';
exit;
}

$query = "SELECT * from products";

$result = $db->query($query);

$num_results = $result->num_rows;

//echo 'Number of products found : <strong>' . $num_results . '</strong><br><br>';

?>     
<div id="userbar">
                <?php
                include 'userbar.php';
                ?>
           </div>
         
           
    <div id="main_content">
   
       <div class="center_content">
       
            <div id="menu_tab">                                     
                   <ul class="menu">                                                                           
                         <li><a href="index.php" class="nav"> home </a></li>
                         
                         <?php
                  
                     if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 0)
                     {
                        echo "<a class=\"nav\" href=\"/musicwebsite/about.php\">about us</a>
                        <a class=\"nav_selected\" href=\"/musicwebsite/products.php\">products</a>
                        <a class=\"nav\" href=\"/musicwebsite/contact.php\">contact us</a>";
                     }
                     
                     if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 1)
                     {
                        echo "<a class=\"nav\" href=\"/musicwebsite/about.php\">about us</a>
                        <a class=\"nav_selected\" href=\"/musicwebsite/products.php\">products</a>
                        <a class=\"nav\" href=\"/musicwebsite/contact.php\">contact us</a>
                        <a class=\"nav\" href=\"/musicwebsite/managesite.php\">manage site</a> ";
                     }
                  ?>
               
                    </ul>
            </div>
           
       
            <div class="categories_products">
                  <div class="title">
                    <p><img src="images/title_products.gif" alt="" title="" />      
                   
                    <form action ='search.php' method='post'>
                      Search for product:<input type ="text" name="term" />
                       price:<select name="secondterm" id="secondterm">
                        <option value="100">1-200</option>
                        <option value="300">200-400</option>
                        <option value="700">500-800</option>
                        <option value="900">800-1000</option>
                        <option value="1000">1000-2000</option>
                        </select>
                       
                      <input type="submit" name="submit" value="Search" />
                    </form>
<div class="prod_box">

                        <div class="prod_details">
           
                            <table width="650" border="2">

                                <tr>
                              <!--  <th>Product Number</th> -->
                                <th>Product Description</th>
                              <!-- <th>Quantity On Hand</th> -->
                                <th>Price</th>
                                <th>Image</th>
                                <?php
                                if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 1)
                        {
                              echo "
                                          <th>UPDATE</th>
                                           <th>DELETE</th> ";
                        }
                        ?>                     
                                </tr>
                           
                           <?php
                        for ($i=0; $i < $num_results; $i++)
                        {
                        
                           $row = $result->fetch_object();
                           
                           $propID = $row->id;
                           $product_name = $row->product_name;
                           $product_description = $row->product_description;
                           $quantity_on_hand = $row->quantity_on_hand;
                           $price = $row->price;
                           $image = $row->image;
                           $formattedPrice = number_format($price, 2, '.', ',');
                        
                           echo '<tr>';
                           echo "<td>$product_description</td>";
                           echo "<td>€$formattedPrice</td>";
                           echo "<td><a href='datadrilldown.php?propID=$propID'><img src='images/$image'/></td>";
                           
                           
                           
                                if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 1)
                        {

                           echo "<td><a href='updateform.php?propID=$propID'>Update Product</a></td>";
                           echo "<td><a href='deleteform.php?propID=$propID'>Delete Product</a></td>";
                           echo '<tr>';
                        }
                        
                        }
                        
                        echo '</table>';
                        
                        //$result->free();
                        $db->close();
                     ?>
                           
                                               
                        </div>                   
                    </div>
       
             <div class="clear"></div>       
            </div>
   
        </div>
           
    </div>
   
    <div id="footer">
        <div class="left_footer"><img src="images/footer_logo.gif" alt="" title="" /></div>
        <div class="right_footer"><a href="http://csscreme.com/freecsstemplates/" title="free css templates"><img src="images/csscreme.gif" alt="free css templates" border="0" /></a></div>
    </div>

</div>
</body>
</html>

thanks

seandisanti
php-forum Fan User
php-forum Fan User
Posts: 838
Joined: Mon Oct 01, 2012 12:32 pm

Re: problem mixing php and html

Postby seandisanti » Mon Nov 12, 2012 2:18 pm

The way I handle the same problem is by adding a condition in my header (header include that is required on all of my pages) that if the page being displayed is any page but the login page, and the user is not already logged in, to redirect to to login.php?nli=1 the get variable there "nli" stands for not logged in, and login.php has a condition right above the login form that says

Code: Select all

if (isset($_GET['nli']))
{
echo 'You must be logged in to view that page';
}

So they're taken away from the page i don't want them to see immediately, and THEN told to log in.

User avatar
simplypixie
php-forum Active User
php-forum Active User
Posts: 300
Joined: Sun Dec 11, 2011 12:51 am
Location: Shrewsbury, Shropshire
Contact:

Re: problem mixing php and html

Postby simplypixie » Tue Nov 13, 2012 1:16 am

Firstly I would separate your html from your php - for one it makes things much easier to code and also to read, so instead of putting

Code: Select all

if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 0)
                     {
                        echo "<a class=\"nav\" href=\"/musicwebsite/about.php\">about us</a>
                        <a class=\"nav_selected\" href=\"/musicwebsite/products.php\">products</a>
                        <a class=\"nav\" href=\"/musicwebsite/contact.php\">contact us</a>";
                     }


Put

Code: Select all

<?php if(isset($_SESSION['signed_in']) && $_SESSION['userLevel'] == 0) { ?>
   <a class="nav" href="/musicwebsite/about.php">about us</a>
   <a class="nav_selected" href="/musicwebsite/products.php">products</a>
   <a class="nav" href="/musicwebsite/contact.php">contact us</a>
<?php } ?>


With regard to your problem, you are using isset incorrectly

Code: Select all

if(isset($_SESSION['signed_in']) != true) // This is wrong, it should be
if(!isset($_SESSION['signed_in'])) // and this
if(isset($_SESSION['signed_in']) == true && $_SESSION['userLevel'] == 0) // Should be
if(isset($_SESSION['signed_in']) && $_SESSION['userLevel'] == 0)


Return to “PHP coding => General”

Who is online

Users browsing this forum: No registered users and 1 guest

cron