<?php
session_start();
/* Mysql query:
CREATE TABLE IF NOT EXISTS `bra` (
`bugid` int(255) NOT NULL AUTO_INCREMENT,
`bugtitle` mediumtext NOT NULL,
`bugdetails` text NOT NULL,
`status` int(255) NOT NULL,
`ip` mediumtext NOT NULL,
PRIMARY KEY (`bugid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
*/
$settings = array();
$settings['host'] = ''; // Host
$settings['user'] = ''; // User
$settings['pass'] = ''; // Wachtwoord
$settings['datb'] = ''; // Database
$settings['adminpass'] = 'adminpass'; // Admin pass
$connection = mysql_connect($settings['host'],$settings['user'],$settings['pass']);
$selectdb = mysql_select_db($settings['datb'], $connection);
if($connection){ // Wanneer geconnecteerd is
if($selectdb){ // Wanneer database geselecteerd is
$connected = true;
}
else
{ // Wanneer niet de database is geselecteerd
$connected = false;
$error = 'Database wasn't selected!<br/>';
}
}
else
{ // Wanneer niet met de database verbonden is
$connected = false;
$error = 'There is no connection with the database.<br/>';
}
function bugstatus($status){
if($status == '0'){
$return = "Not fixed";
}
elseif($status == '1'){
$return = "Fixed";
}
elseif($status == '2'){
$return = "Nofix";
}
return $return;
}
?>
<!-- Hier kan HTML geplaatst worden -->
<?php
if($connected == TRUE){
if(isset($_GET['action'])){
if($_GET['action'] == "add"){
if($_SERVER['REQUEST_METHOD'] == "POST"){
if(empty($_POST['bugtitle']) || empty($_POST['bugdetails'])){
echo 'One of the fields was empty! Go back and try again.<br/>';
}
else
{
$query = "INSERT INTO bra
(
bugtitle,
bugdetails,
status,
ip
)
VALUES
(
'". mysql_real_escape_string($_POST['bugtitle']) ."',
'". mysql_real_escape_string($_POST['bugdetails']) ."',
'0',
'". $_SERVER['REMOTE_ADDR'] ."'
)";
$mysqlquery = mysql_query($query);
if($mysqlquery){
echo 'Bug reported.<br/>';
}
else
{
echo 'Mysql query failed! Please contact the webmaster!<br/>';
}
}
}
else
{
?>
<form action="bra.php?action=add" method="post">
Bug title: <input type="text" name="bugtitle"/><br/>
Details:<br/>
<textarea cols="50" rows="5" name="bugdetails"></textarea><br/>
By pressing 'submit' you understand that you will not spam and your ip adress will be logged.<br/>
<input type="submit" value="submit"/>
</form>
<?php
}
}
elseif($_GET['action'] == "admin"){
if(isset($_SESSION['adminbra']) && $_SESSION['adminbra'] == TRUE){
echo '<a href="bra.php?action=adminlogout">Logout</a><br/>';
$query = "SELECT *
FROM bra
ORDER BY bugid DESC
";
$mysqlquery = mysql_query($query);
if($mysqlquery){
if(mysql_num_rows($mysqlquery) > 0){
while($row = mysql_fetch_assoc($mysqlquery)){
echo '<a href="bra.php?action=viewbug&id='. $row['bugid'] .'">'. htmlentities($row['bugtitle']) .'</a> | status: '. bugstatus($row['status']) .' | <a href="bra.php?action=editbug&id='. $row['bugid'] .'">Edit</a> | <a href="bra.php?action=delbug&id='. $row['bugid'] .'">Delete</a> | <br/>';
}
}
else
{
echo 'There aren't any bugs added yet!<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
else
{
echo '<a href="bra.php?action=adminlogin">Login</a> first.<br/>';
}
}
elseif($_GET['action'] == "adminlogin"){
if($_SERVER['REQUEST_METHOD'] == "POST"){
if($_POST['password'] == $settings['adminpass']){
$_SESSION['adminbra'] = TRUE;
echo 'Logged in. Now you can visit the <a href="bra.php?action=admin">Admin</a>.<br/>';
}
else
{
echo 'Password was incorrect! Go back and try again.<br/>';
}
}
else
{
?>
<form action="bra.php?action=adminlogin" method="post">
password: <input type="text" name="password"/>
<input type="submit" value="submit"/>
</form>
<?php
}
}
elseif($_GET['action'] == "editbug"){
if(isset($_SESSION['adminbra']) && $_SESSION['adminbra'] == TRUE){
if($_SERVER['REQUEST_METHOD'] == "POST"){
$updtqry = "UPDATE bra
SET
bugtitle = '". mysql_real_escape_string($_POST['bugtitle']) ."',
status = '". mysql_real_escape_string($_POST['bugstatus']) ."',
bugdetails = '". mysql_real_escape_string($_POST['bugdetails']) ."'
WHERE
bugid = '". $_SESSION['braupdid'] ."'
";
if(!$res = mysql_query($updtqry))
{
echo 'Mysql error! Contact webmaster ASAP!<br/>';
}
elseif(mysql_affected_rows() == 0)
{
echo 'No updates where made!<br/>';
}
else
{
echo 'Updated.<br/>';
}
}
else
{
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$qry1 = "SELECT *
FROM bra
WHERE bugid = '". $_GET['id'] ."'
ORDER BY bugid DESC
";
$mysqlqry1 = mysql_query($qry1);
if($mysqlqry1){
if(mysql_num_rows($mysqlqry1) > 0){
while($row1 = mysql_fetch_assoc($mysqlqry1)){
$_SESSION['braupdid'] = $row1['bugid'];
echo '<form action="bra.php?action=editbug" method="post">';
echo 'Bug title: <input type="text" name="bugtitle" value="'. $row1['bugtitle'] .'"/><br/>';
echo 'Bug status: <select name="bugstatus">';
echo '<option value="0">Not fixed</option>';
echo '<option value="1">Fixed</option>';
echo '<option value="2">Nofix</option>';
echo '</select><br/>';
echo 'Details: <br/>';
echo '<textarea cols="50" rows="5" name="bugdetails">'. $row1['bugdetails'] .'</textarea>';
echo '<input type="submit" value="submit"/>';
}
}
else
{
echo 'Invalid bug id.<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
else
{
echo 'Please provide a valid bug id.<br/>';
}
}
}
else
{
echo '<a href="bra.php?action=adminlogin">Login</a> first.<br/>';
}
}
elseif($_GET['action'] == "delbug"){
if(isset($_SESSION['adminbra']) && $_SESSION['adminbra'] == TRUE){
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$qry1 = "SELECT *
FROM bra
WHERE bugid = '". $_GET['id'] ."'
ORDER BY bugid DESC
";
$mysqlqry1 = mysql_query($qry1);
$mysqlnumrows1 = mysql_num_rows($mysqlqry1);
$result = mysql_fetch_assoc($mysqlqry1);
if($mysqlqry1){
if($mysqlnumrows1 > 0){
if($_SERVER['REQUEST_METHOD'] == "POST"){
if($_POST['hash'] == $_SESSION['bradelhash']){
$delqry = "DELETE FROM bra
WHERE bugid = ". mysql_real_escape_string($_SESSION['bradelbugid']) ."
";
if(!$res = mysql_query($delqry))
{
echo 'Bug is not deleted! Contact Webmaster ASAP!<br/>';
}
elseif(mysql_affected_rows() == 0)
{
echo 'No bugs where deleted. Contact Webmaster ASAP!<br/>';
}
else
{
echo 'Bug deleted!<br/>';
}
}
else
{
echo 'Something went wrong with session sertification.<br/>';
}
}
else
{
$number = sha1(microtime());
$_SESSION['bradelhash'] = $number;
$_SESSION['bradelbugid'] = $_GET['id'];
?>
Do you realy want to delete <?php echo $result['bugtitle']; ?>?<br/>
<form action="bra.php?action=delbug&id=<?php echo $result['bugid']; ?>" method="post">
<input type="hidden" name="hash" value="<?php echo $number; ?>"/>
<input type="submit" value="Yes"/>
</form>
<?php
}
}
else
{
'Please provide a valid bug id.<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
else
{
echo 'Please provide a valid bug id.<br/>';
}
}
else
{
echo '<a href="bra.php?action=adminlogin">Login</a> first.<br/>';
}
}
elseif($_GET['action'] == "viewbug"){
if(isset($_GET['id']) && is_numeric($_GET['id'])){
$qry1 = "SELECT *
FROM bra
WHERE bugid = '". $_GET['id'] ."'
ORDER BY bugid DESC
";
$mysqlqry1 = mysql_query($qry1);
if($mysqlqry1){
if(mysql_num_rows($mysqlqry1) > 0){
while($row1 = mysql_fetch_assoc($mysqlqry1)){
echo '<b>Bug title:</b> '. htmlentities($row1['bugtitle']) .'<br/>';
echo '<b>Bug status: </b>'. bugstatus($row1['status']) .'<br/>';
echo '<b>Submitted by:</b>'. $row1['ip'] .'<br/>';
echo '<b>Details:</b><br/>'. nl2br(htmlentities($row1['bugdetails'])) .'<br/>';
}
}
else
{
echo 'Invalid id.<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
else
{
echo 'Provide a valid id.<br/>';
}
}
elseif($_GET['action'] == "adminlogout"){
if(isset($_SESSION['adminbra']) && $_SESSION['adminbra'] == TRUE){
if($_SERVER['REQUEST_METHOD'] == "POST"){
if($_SESSION['bralogouthash'] == $_POST['hash']){
$_SESSION = array();
session_destroy();
echo 'Logged out!';
}
else
{
echo 'Something went wrong while logging out.';
}
}
else
{
$number = sha1(microtime());
$_SESSION['bralogouthash'] = $number;
?>
Do you realy want to log out?<br/>
<form action="" method="post">
<input type="hidden" name="hash" value="<?php echo $number; ?>"/>
<input type="submit" value="Yes"/>
</form>
<?php
}
}
else
{
echo 'You aren't logged in!<br/>';
}
}
else
{
echo '<b>All bugs</b> - <a href="bra.php?action=add">Add a bug</a><br/>';
$qry1 = "SELECT *
FROM bra
ORDER BY bugid DESC
";
$mysqlqry1 = mysql_query($qry1);
if($mysqlqry1){
if(mysql_num_rows($mysqlqry1) > 0){
while($row1 = mysql_fetch_assoc($mysqlqry1)){
echo '<a href="bra.php?action=viewbug&id='. $row1['bugid'] .'">'. $row1['bugtitle'] .'</a> | status: '. bugstatus($row1['status']);
}
}
else
{
echo 'No bugs added yet.<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
}
else
{
echo '<b>All bugs</b> - <a href="bra.php?action=add">Add a bug</a><br/>';
$qry1 = "SELECT *
FROM bra
ORDER BY bugid DESC
";
$mysqlqry1 = mysql_query($qry1);
if($mysqlqry1){
if(mysql_num_rows($mysqlqry1) > 0){
while($row1 = mysql_fetch_assoc($mysqlqry1)){
echo '<a href="bra.php?action=viewbug&id='. $row1['bugid'] .'">'. $row1['bugtitle'] .'</a> | status: '. bugstatus($row1['status']) .'<br/>';
}
}
else
{
echo 'No bugs added yet.<br/>';
}
}
else
{
echo 'Mysql query failed! Contact webmaster ASAP!<br/>';
}
}
}
else
{
echo $error;
}
?>
<!-- Hier kan HTML geplaatst worden -->Nu heb ik een een Bug Report script gemaakt met Admin. Hoogtepuntje, want ik weet nu ook hoe je met UPDATE en DELETE FROM moet werken. Ik heb het gemaakt omdat ik Mantis, met z'n 12 MB, een beetje overbodig vind. Dit is slechts 12 kb. Ik wil het graag ook in de libary zetten, maar eerst nog even jullie puntjes afwachten.
Sowieso heb ik gelet op:
-XSS
-Mysql injection
-Dat logout hash injection iets (Weet de naam niet meer :x)
Zijn er nog enkele puntjes die ik kan verbeteren?