Grizzly13 Posted July 10, 2009 Share Posted July 10, 2009 Hi Guys I am having a slight problem with getting the code right for an admin person to be able to activate / Freeze and account or deleting the user from the database completely. I have found some script which is meant to do the job, but unfortunately it does work. The script seems to use javascript to perform the action of changing and deleting. I am rather new at this, but is it possible to use PHP instead of java? I have attached the code for the management page. Your help will be much appreciated. Grizzly <?php if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '1')) { echo" <table border='0%' width='100%' height='100%' cellspacing='0%' cellpadding='0%' align='center'> <tr> <td valign='top'> <br> <p>"; include('connect.php'); $query = ("SELECT * FROM users where admin = '0' ORDER BY id desc"); $result = mysql_query($query) or die(mysql_error()); $num_results = mysql_num_rows($result); $row_count = 0; for($i=0;$i<$num_results; $i++) { $row = mysql_fetch_array($result); if($row['status'] == '1') $style='color: green'; else $style='color: red'; print "<table border='0%' width='70%' cellspacing='0%' cellpadding='0%' align='center'> <tr valign='top'> <td width='60%' align='Justify'> <a href='javascript://' onclick=\"detail(" . $row["id"] . ")\"' style='". $style ."'> <b>" . ucfirst($row['firstname']) . "</b> </a> </td> <td width='*%' align='left'> <a href='Manage_Profile.php' class='blackText' style='". $style ."' onclick=\"permission(" . $row["id"] . "," . $row["status"] . ")\"> "; if($row['status'] == '1') print "<b>Freeze Account</b>"; else print "<b>Activate Account</b>"; echo " </a> </td> <td width='*%' align='right'>"; if($row['status'] == '1') { print " <a href='Manage_Profile.php' class='greyText' onclick='alert(\"You must freeze this account first.\")'> <b>Delete Account</b> </a>"; } else { print " <a href='Manage_Profile.php' class='blackText' onclick=\"del(" . $row["id"] . ")\"> <b>Delete Account</b> </a>"; } echo " </td> </tr> </table> <hr width='70%'>"; $row_count++; } echo " </td> </tr> </table>"; } ?> Quote Link to comment Share on other sites More sharing options...
ignace Posted July 10, 2009 Share Posted July 10, 2009 but unfortunately it does work Damn, a script that works. I can only think of how you now would feel The script seems to use javascript... possible to use PHP instead of java Javascript and Java are 2 different things. JavaScript is a scripting-language which means it's statements are being interpreted by the browser (which means that the browser keeps an association table for each statement and just swaps it with micro-code) while Java code is being translated (using a compiler) into executable code (1's and 0's). This may be not entirely correct and I'm sure someone with a more proper knowledge can tell you the ins and outs. Now to answer your question: Yes you can use just plain php to perform these actions. I do recommend using something else then numbers to indicate status. You may want to start looking at design patterns, active record more precise which would allow you to do somthing like: <?php class User { const STATE_PENDING = 'pending'; const STATE_ACTIVATED = 'activated'; const STATE_FROZEN = 'frozen'; //depending if the account remains in the system or not STATE_DELETED may be added protected $_data = array(); public function isPending() { return $_data['state'] === self::STATE_PENDING; } ...you get the idea } ?> You can then use this as: <?php while ($row = mysql_fetch_assoc($result)) { $users[] = new User($row); } foreach ($users as $user) { if ($user->isPending()) { ..logic.. } } ?> The same applies for login: <?php // login query if (mysql_num_rows($result) == 1) { $row = mysql_fetch_assoc($result); $user = new User($row); if ($user->isPending()) { //sorry, wait for your account to be activated or activate your account (if using e-mail activation) } if ($user->isFrozen()) { //sorry, your account has been frozen } } ?> Quote Link to comment Share on other sites More sharing options...
ignace Posted July 10, 2009 Share Posted July 10, 2009 Ofcourse this does imply that your php code will be responsible for user status (and not the db (and thus statusses will be not manageable) but as you used a number and directly assumed a status i'm pretty sure you weren't using a table to manage the user statusses anyway) Quote Link to comment Share on other sites More sharing options...
Grizzly13 Posted July 10, 2009 Author Share Posted July 10, 2009 Thanks for the help man, but unfortunately the whole website is based around using "0" and "1". Perhaps the best way forward is to to determine why the current script is not working in this website. I took the code from an example website which I was given and it works perfectly there. I have probably not included something into the new webpage which is needed of something. I have attached the script for both website pages, if you could help me that would be great. Thanks Example Website: <?php ob_start(); session_start(); if (empty($_SESSION['username'])) { header('location: index.php'); } else { if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '0') && ($_SESSION['status'] == '1')) { header('location: userInbox.php'); } else { if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '0') && ($_SESSION['status'] == '0')) { header('location: index.php'); } else { if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '1')) { include('topHalf.php'); echo" <table border='0%' width='100%' height='100%' cellspacing='0%' cellpadding='0%' align='center'> <tr height='5%'> <td valign='top'> <table border='0%' width='100%' height='100%' cellspacing='0%' cellpadding='0%' align='center'> <tr> <td align='center' class='blackText'> <b><h2>Hello " . $_SESSION['firstname'] . "</h2></b> </td> </tr>"; include('menu.php'); echo "</table> </td> </tr> <tr> <td valign='top'> <hr width='80%'> <br> <p>"; include('connect.php'); $query = ("SELECT * FROM tblusers where admin = '0' ORDER BY id desc"); $result = mysql_query($query) or die(mysql_error()); $num_results = mysql_num_rows($result); $row_count = 0; for($i=0;$i<$num_results; $i++) { $row = mysql_fetch_array($result); if($row['status'] == '1') $style='color: green'; else $style='color: red'; print "<table border='0%' width='70%' cellspacing='0%' cellpadding='0%' align='center'> <tr valign='top'> <td width='60%' align='Justify'> <a href='javascript://' onclick=\"detail(" . $row["id"] . ")\"' class='tab' style='". $style ."'> <b>" . ucfirst($row['organization']) . "</b> </a> </td> <td width='*%' align='left'> <a href='manageClientele.php' class='blackText' style='". $style ."' onclick=\"permission(" . $row["id"] . "," . $row["status"] . ")\"> "; if($row['status'] == '1') print "<b>Freeze Account</b>"; else print "<b>Activate Account</b>"; echo " </a> </td> <td width='*%' align='right'>"; if($row['status'] == '1') { print " <a href='manageClientele.php' class='greyText' onclick='alert(\"You must freeze this account first.\")'> <b>Delete Account</b> </a>"; } else { print " <a href='manageClientele.php' class='blackText' onclick=\"del(" . $row["id"] . ")\"> <b>Delete Account</b> </a>"; } echo " </td> </tr> </table> <hr width='70%'>"; $row_count++; } echo " </td> </tr> </table>"; include('bottomHalf.php'); } } } } ob_end_flush(); ?> My Website: <?php ob_start(); session_start(); ?> <!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=iso-8859-1"> <meta name="robots" content="index, follow"> <meta name="description" content="Manufacturer of Razor Wire, Razor Wire Mesh, Razor Wire with Electrocoil, Razor Wire Flatwrap Coil, Razor Ribbon Strip, Wall Spikes, Barbed Tape, ClearVu Security Fencing and Typical Razor Wire Fencing"> <meta name="keywords" content="razor wire fence,razor wire mesh,razor wire security,barbed tape,loading ramps,wallspikes,razor wire flatwrap coil,security fence systems,clearvu,358,invisible wall,fencing,wire,cochrane,betafence,betafencing south africa,fence,358 mesh,clearvu invisible wall,high security fencing system"> <title>Cochrane Steel | News & Events - Razor Wire, Razor Wire Mesh, Razor Wire Fence, Razor Wire Fence, Razor Wire Mesh, Razor Wire Security, Barbed Tape, Loading Ramps, Wallspikes, Razor Wire Flatwrap Coil, Security Fence Systems</title> <link rel="stylesheet" href="css/Stylesheet.css" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="css/jd.gallery.css" type="text/css" media="screen" charset="utf-8" /> <script src="scripts/mootools-1.2.1-core-yc.js" type="text/javascript"></script> <script src="scripts/mootools-1.2-more.js" type="text/javascript"></script> <script src="scripts/jd.gallery.js" type="text/javascript"></script> <script src="scripts/jd.gallery.transitions.js" type="text/javascript"></script> <script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script> </head> <body> <table width="960" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td width="48" height="145" rowspan="2"> </td> <td height="145" colspan="2" rowspan="2"><img src="Images/Cochrane_Products_Logo.png" alt="Cochrane Steel Products Logo" width="209" height="89" /></td> <td width="54" height="145" rowspan="2"> </td> <td height="50" colspan="2" valign="top"><div align="right"> <? include ("menu.php"); ?> </div></td> <td width="48" height="145" rowspan="2"> </td> </tr> <tr> <td height="95" colspan="2" valign="top"><div align="right"> <h1><span class="topbodycopy">Manufacturers of Perimeter Security Barriers</span><span class="topheading"><br /> COCHRANE NEWS AND EVENTS</span></h1> </div></td> </tr> <tr> <td width="48"> </td> <td colspan="5" valign="top"><div align="right"> <div id="main"> <p> </p> <div id="mainlinks"> <table width="330" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="30" valign="top" bgcolor="#FFFFFF"><table width="315" border="0" align="right" cellpadding="0" cellspacing="0"> <tr> <td height="20" valign="middle" bgcolor="#FFFFFF" class="linehorizontal"><div align="right" class="linksmain"> <a href="index.php">HOME</a> | <a href="Cochrane_Steel_Profile.php">PROFILE </a>| <a href="Cochrane_Steel_Products.php">PRODUCTS</a> | <a href="Cochrane_Steel_News.php">NEWS</a> | <a href="Contact_Cochrane_Steel.php">CONTACT US</a></div></td> </tr> </table></td> </tr> </table> </div> <script type="text/javascript"> function startGallery() { var myGallery = new gallery($('myGallery'), { timed: true, defaultTransition: "fadeslideleft" }); } window.addEvent('domready', startGallery); </script> <table width="864" border="0" cellspacing="0" cellpadding="0"> <tr> <td> </td> </tr> </table> </div> </div></td> <td width="48"> </td> </tr> <tr> <td width="48"> </td> <td colspan="5"> </td> <td width="48"> </td> </tr> <tr> <td> </td> <td colspan="5"> <table width="864" border="0" cellspacing="0" cellpadding="0"> <tr> <td> <?php if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '1')) { echo" <table border='0%' width='100%' height='100%' cellspacing='0%' cellpadding='0%' align='center'> <tr> <td valign='top'> <br> <p>"; include('connect.php'); $query = ("SELECT * FROM users where admin = '0' ORDER BY id desc"); $result = mysql_query($query) or die(mysql_error()); $num_results = mysql_num_rows($result); $row_count = 0; for($i=0;$i<$num_results; $i++) { $row = mysql_fetch_array($result); if($row['status'] == '1') $style='color: green'; else $style='color: red'; print "<table border='0%' width='70%' cellspacing='0%' cellpadding='0%' align='center'> <tr valign='top'> <td width='60%' align='Justify'> <a href='javascript://' onclick=\"detail(" . $row["id"] . ")\"' style='". $style ."'> <b>" . ucfirst($row['firstname']) . "</b> </a> </td> <td width='*%' align='left'> <a href='Manage_Profile.php' class='blackText' style='". $style ."' onclick=\"permission(" . $row["id"] . "," . $row["status"] . ")\"> "; if($row['status'] == '1') print "<b>Freeze Account</b>"; else print "<b>Activate Account</b>"; echo " </a> </td> <td width='*%' align='right'>"; if($row['status'] == '1') { print " <a href='Manage_Profile.php' class='greyText' onclick='alert(\"You must freeze this account first.\")'> <b>Delete Account</b> </a>"; } else { print " <a href='Manage_Profile.php' class='blackText' onclick=\"del(" . $row["id"] . ")\"> <b>Delete Account</b> </a>"; } echo " </td> </tr> </table> <hr width='70%'>"; $row_count++; } echo " </td> </tr> </table>"; } ?> </td> </tr> </table> </td> <td width="48"> </td> </tr> <tr> <td> </td> <td colspan="5"> </td> <td width="48"> </td> </tr> <tr valign="top"> <td width="48" height="200" rowspan="2"> </td> <td height="200" colspan="5"><table width="864" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="1" height="150" valign="top"><br/> <table width="1" height="46" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="46" valign="top" class="linetile"> </td> </tr> </table> <h2> </h2></td> <td width="186" height="150" valign="top"><h1><span class="linksheading"> LANDSIDE PERIMETER BARRIERS</span></h1> <p class="links"> - <a href="Why_Ripper_Razor.php">Why Ripper / Razor?</a><br /> - <a href="Razor_Wire_Fence.php">Razor Wire</a><br /> - <a href="Razor_Mesh_Fence.php">Welded Razor Mesh</a><br /> - <a href="Ribbon_Mesh_Fence.php">Ribbon Mesh</a><br /> - <a href="ClearVu_Fence_Invisible_Wall.php">ClearVu Fencing Mesh</a><br /> - <a href="ClearVu_Reinforced_Mesh_Fence.php">ClearVu Reinforced Mesh</a><br /> - <a href="Parkland_Mesh_Fence.php">Parkland Mesh</a></p></td> <td width="1" height="150" valign="top"><br /> <table width="1" height="124" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="124" valign="top" class="linetile"> </td> </tr> </table></td> <td width="171" height="150" valign="top"><h1><span class="linksheading">MARINE PERIMETER BARRIERS</span></h1> <p class="links"> - <a href="Antipersonnel_Boat_Floating_Barrier.php">Anti Personnel / Boat Barrier</a></p></td> <td width="1" height="150" valign="top"><br /> <table width="1" height="58" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="58" valign="top" class="linetile"> </td> </tr> </table></td> <td width="176" height="150" valign="top"><h1><span class="linksheading"> RAPID DEPLOYMENT BARRIERS</span></h1> <p class="links"> - <a href="SD_300_Rapid_Deployment_Perimeter.php">SD 300 Barrier</a><br /> - <a href="HD_Rapid_Deployment_Perimeter.php">HD 300 Barrier</a><br /> - <a href="SD_600_Rapid_Deployment_Perimeter.php">SD 600 Barrier</a></p></td> <td width="1" height="150" valign="top"><br /> <table width="1" height="84" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="84" valign="top" class="linetile"> </td> </tr> </table></td> <td width="159" height="150" valign="top"><h1><span class="linksheading"> PERIMETER ENHANCEMENTS</span></h1> <p class="links"> - <a href="Ribbon_Strip_Wall_Topping.php">Ribbon Strip</a><br /> - <a href="Consertina_Coil_Wall_Topping.php">Concertina Coil</a><br /> - <a href="Wall_Spike_Toppings.php">Wall Spikes</a><br /> - <a href="Flat_Wrap_Wall_Topping.php">Flat Wrap</a></p></td> <td width="1" height="150" valign="top"><br /> <table width="1" height="121" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="121" valign="top" class="linetile"> </td> </tr> </table></td> <td width="122" height="150" valign="top"><h1><span class="linksheading">OTHER PRODUCTS</span></h1> <p class="links"> - <a href="Electrical_Cable_Trays.php">Cable Trays</a><br /> - <a href="Razor_Wire_Clips.php">Clips</a></p> <h1><span class="linksheading">LOGISTICS</span></h1> <p class="links"> - <a href="Mobile_Logistics_Loading_Ramp.php">Mobile Loading Ramp</a><br /> - <a href="Forklift_Trailer.php">Forklift Trailer</a></p></td> </tr> </table></td> <td width="48" height="200" rowspan="2"> </td> </tr> <tr valign="top"> <td colspan="5"><table width="600" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td colspan="5" valign="top"><p align="center"><span class="topbodycopy">Copyright © 2009 Cochrane Steel Products (Pty) Ltd</span></p></td> <td> </td> </tr> </table></td> </tr> <tr> <td width="48"> </td> <td width="144"> </td> <td width="144"> </td> <td> </td> <td width="378"> </td> <td width="144"> </td> <td width="48"> </td> </tr> </table> </body> </html> <?php ob_end_flush(); ?> Quote Link to comment Share on other sites More sharing options...
ignace Posted July 10, 2009 Share Posted July 10, 2009 if (empty($_SESSION['username'])) { header('location: index.php'); } else { // directly implies $_SESSION['username'] is not empty (if it was this wouldn't execute) if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '0') && ($_SESSION['status'] == '1')) if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '0') && ($_SESSION['status'] == '1')) if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '0') && ($_SESSION['status'] == '0')) if ((!empty ($_SESSION['username'])) && ($_SESSION['admin'] == '1')) Can be simplified to: if (!empty($_SESSION['username'])) { if (!$_SESSION['admin']) {// !0 = true if (!$_SESSION['status']) {// status=0 header('Location: index.php'); } else {// status=1 header('Location: userInbox.php'); } } else {// admin=1 include('topHalf.php'); echo ''; } } else {// $_SESSION['username']=empty header('Location: index.php'); } Which can be directly transformed to: if (empty($_SESSION['username']) || ($_SESSION['admin'] == FALSE && $_SESSION['status'] == FALSE)) { header('Location: index.php'); } if ($_SESSION['admin'] == FALSE && $_SESSION['status'] == TRUE) { header('Location: userInbox.php'); } if ($_SESSION['admin'] == TRUE) { include('topHalf.php'); echo ''; } This should help you simplify your script and will make it easier to spot errors more easily. To simplify it further, you'd get: if (empty($_SESSION['username']) || (empty($_SESSION['admin']) && empty($_SESSION['status']))) { header('Location: index.php'); } if (empty($_SESSION['admin']) && $_SESSION['status'] == TRUE) { header('Location: userInbox.php'); } if ($_SESSION['admin'] == TRUE) { include('topHalf.php'); echo ''; } Quote Link to comment Share on other sites More sharing options...
Grizzly13 Posted July 10, 2009 Author Share Posted July 10, 2009 Fantastic, thanks very much for your help hey. Much appreciated. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.