1
0
mirror of https://github.com/php/web-php.git synced 2026-03-27 08:42:12 +01:00
Files
archived-web-php/bugs.php
2001-07-07 18:57:07 +00:00

744 lines
23 KiB
PHP

<?php /* vim: set noet ts=4 sw=4: : */
require_once 'prepend.inc';
if (isset($save) && isset($pw)) { # non-developers don't have $user set
setcookie("MAGIC_COOKIE",base64_encode("$user:$pw"),time()+3600*24*12,'/');
}
if (isset($MAGIC_COOKIE) && !isset($user) && !isset($pw)) {
list($user,$pw) = explode(":", base64_decode($MAGIC_COOKIE));
}
/* See the end of the script for the table layout. */
$mail_bugs_to = "php-dev@lists.php.net";
if (is_primary_site() || strstr($MYSITE,"localhost")) {
$dbhost = "localhost";
$dbuser = "nobody";
$dbpwd = "";
} else {
header("Location: http://www.php.net/bugs.php" . ($QUERY_STRING ? "?$QUERY_STRING" : ""));
exit;
}
mysql_connect($dbhost,$dbuser,$dbpwd)
or die("Unable to connect to SQL server.");
mysql_select_db("php3");
commonHeader("Bug Reporting");
echo "<font size=\"-1\">\n";
require 'format-text.inc';
function show_id_options($current) {
$result = mysql_query("SELECT DISTINCT dev_id FROM bugdb WHERE dev_id NOT LIKE '%@%' AND dev_id NOT LIKE '%.%' AND php_version LIKE '4%' ORDER BY dev_id");
echo "<option>Any</option>\n";
while ($row = mysql_fetch_row($result)) {
echo "<option",($row[0] == $current ? " selected" : ""),
">$row[0]</option>\n";
}
}
function show_state_options($state, $show_all, $user_mode=0, $default="") {
if (!$state && !$default) {
$state = "Open";
}
elseif (!$state) {
$state = $default;
}
$state_types = array (
"Open" => 2,
"Closed" => 2,
"Critical" => 1,
"Duplicate" => 2,
"Assigned" => 1,
"Analyzed" => 1,
"Suspended" => 1,
"Feedback" => 3,
"OldFeedback" => 3,
"Bogus" => 1
);
/* regular users can only pick states with type = 1 for unclosed bugs */
if($state != "All" && $state_types[$state] == 1 && $user_mode == 2) {
echo "<option>$state\n";
if($state != "Bogus") echo "<option>Closed\n";
} else {
foreach($state_types as $type => $mode) {
if($mode == $user_mode || $user_mode < 2) {
echo "<option";
if($type == $state) echo " SELECTED";
echo ">$type\n";
}
}
if($show_all) {
$sel = ($state == "All") ? "SELECTED" : "";
echo "<option $sel>All\n";
}
}
}
function show_version_options($current,$default="") {
$versions = array("4.0.6","4.0.5","4.0.4pl1","4.0.4","4.0CVS-".date("Y-m-d"));
while (list(,$v) = each($versions)) {
echo "<option", ($current == $v ? " selected" : ""), ">$v</option>\n";
if ($current == $v) $use++;
}
if (!$use) echo "<option selected>$current</option>\n";
echo "<option value=\"earlier\">Earlier? Upgrade first!</option>\n";
}
function show_types($current,$show_any,$default="") {
include 'bugtypes.inc';
if (!$current && !$default && !$show_any) {
echo "<option value=\"unknown\">--Please Select--</option>\n";
}
elseif (!$current && $show_any) {
$current = "Any";
}
elseif (!$current) {
$current = $default;
}
while (list($key,$value) = each($items)) {
if ($show_any || $value != "Any") {
echo "<option value=\"$key\"",
($key == $current? " selected" : ""),
">$value</option>\n";
if ($key == $current) $use++;
}
}
if (!$use) {
echo "<option selected>$current</option>\n";
}
}
function show_menu($state) {
global $PHP_SELF, $id, $bug_type, $by, $MAGIC_COOKIE, $search_for;
?>
<table bgcolor="#ccccff" border="0" cellspacing="1">
<form method="POST" action="<?php echo $PHP_SELF?>">
<input type="hidden" name="cmd" value="display" />
<tr>
<td><input type="submit" value="Display" /></td>
<td><select name="status"><?php show_state_options($state,1);?></select></td>
<td align="right">bugs of type: </td>
<td><select name="bug_type"><?php show_types($bug_type,1);?></select></td>
<td align="right">last comment by:</td>
<td><select name="by"><?php show_id_options($by);?></select></td>
</tr>
<tr>
<td colspan="3" align="right">Search for:</td>
<td colspan="3"><input type="text" name="search_for" value="<?echo htmlspecialchars($search_for);?>"> in the bug database</td>
</tr>
</form>
<form method="GET" action="<?php echo $PHP_SELF;?>">
<tr>
<td colspan="3" align="right"><input type="submit" value="Edit" /> bug number:</td>
<td colspan="2"><input type="text" name="id" value="<?echo $id?>" /></td>
<input type="hidden" name="edit" value="<?php echo isset($MAGIC_COOKIE) ? 1 : 2;?>" />
<td align="center"><a href="bugstats.php">Statistics</a></td>
</tr>
</form>
</table>
<i>Feature/Change requests must be explicitly selected to be shown.</i>
<p></p>
<?php
}
function find_password($user) {
$fp=@fopen("/repository/CVSROOT/passwd","r");
if (!$fp) {
return ("");
}
while(!feof($fp)) {
$line=fgets($fp,120);
list($luser,$passwd,$junk) = explode(":",$line);
if($user==$luser) {
fclose($fp);
return($passwd);
}
}
fclose($fp);
return("");
}
function valid_login($user,$pass) {
if($user!="cvsread") {
$psw=find_password($user);
if(strlen($psw)>0) {
return crypt($pass,substr($psw,0,2)) == $psw;
}
}
return false;
}
function get_old_comments ($bug_id) {
$divider = str_repeat("-", 72);
$max_message_length = 10 * 1024;
$max_comments = 5;
$output = ""; $count = 0;
$res = @mysql_query("SELECT ts, email, comment FROM bugdb_comments WHERE bug=$bug_id ORDER BY ts DESC");
if (!$res) return "";
# skip the most recent (this is get_old_comments, not get_all_comments!)
$row = mysql_fetch_row($res);
if (!$row) return "";
while ($row = mysql_fetch_row($res) && strlen($output) < $max_message_length && $count++ < $max_comments) {
$output .= "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n";
}
if (strlen($output) < $max_message_length && $count < $max_comments) {
$res=@mysql_query("SELECT ts1,email,ldesc FROM bugdb WHERE id=$bug_id");
if (!$res) return $output;
$row = mysql_fetch_row($res);
if (!$row) return $output;
return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "[$row[0]] $row[1]\n\n$row[2]\n\n$divider\n\n");
}
else {
return ("\n\nPrevious Comments:\n$divider\n\n" . $output . "The remainder of the comments for this report are too long. To view\nthe rest of the comments, please view the bug report online at\n http://bugs.php.net/?id=$bug_id\n");
}
return "";
}
function addlinks($text) {
$text = htmlspecialchars($text);
$text = preg_replace("/((mailto|http|ftp|nntp|news):.+?)(&gt;|\\s|\\)|\\.\\s|$)/i","<a href=\"\\1\">\\1</a>\\3",$text);
# what the heck is this for?
$text = preg_replace("/[.,]?-=-\"/", '"', $text);
return $text;
}
/* validate an incoming bug report */
function incoming_details_are_valid($require_ldesc=0) {
global $email,$bug_type,$php_version,$sdesc,$ldesc;
$valid = 1;
if(!preg_match("/[.\\w+-]+@[.\\w]+\\.\\w{2,}/i",$email)) {
echo "<h2 class=\"error\">Please provide a valid email address.</h2>";
$valid = 0;
}
if ($bug_type=="none") {
echo "<h2 class=\"error\">Please select an appropriate bug type.</h2>";
$valid = 0;
}
if ($php_version=='earlier') {
echo "<h2 class=\"error\">Please select a valid PHP version. If your PHP version is too old, please upgrade first and see if the problem has not already been fixed.</h2>";
$valid = 0;
}
if (!$sdesc) {
echo "<h2 class=\"error\">You must supply a short description of the bug you are reporting.</h2>";
$valid = 0;
}
if ($require_ldesc && !$ldesc) {
echo "<h2 class=\"error\">You must supply a long description of the bug you are reporting.</h2>";
$valid = 0;
}
return $valid;
}
if ($cmd == "send") {
if (incoming_details_are_valid(1)) {
show_menu($status);
echo "<hr />\n";
$ret = mysql_query("INSERT INTO bugdb (bug_type,email,sdesc,ldesc,php_version,php_os,status,ts1,passwd) VALUES ('$bug_type','$email','$sdesc','$ldesc','$php_version','$php_os','Open',NOW(),'$passwd')");
$cid = mysql_insert_id();
$report = "";
$ldesc = stripslashes($ldesc);
$sdesc = stripslashes($sdesc);
echo "<pre>\n";
$report .= "From: $email\n";
$report .= "Operating system: $php_os\n";
$report .= "PHP version: $php_version\n";
$report .= "PHP Bug Type: $bug_type\n";
$report .= "Bug description: ";
echo $report;
echo htmlspecialchars($sdesc), "\n\n";
wrap(htmlspecialchars($ldesc));
echo "</pre>\n";
$ascii_report = $report.$sdesc."\n\n".wrap($ldesc);
$ascii_report.= "\n-- \nEdit bug report at: http://bugs.php.net/?id=$cid&edit=1\n";
$mailto = $mail_bugs_to . (eregi("documentation",$bug_type) ? ",phpdoc@lists.php.net" : "");
if (mail($mailto, "Bug #$cid: $sdesc", $ascii_report, "From: $email\nX-PHP-Bug: $cid\nMessage-ID: <bug-$cid@bugs.php.net>")) {
echo "<p><h2>Mail sent to $mailto...</h2></p>\n";
echo "<p>Thank you for your help!</p>";
echo "<p><i>The password for this report is</i>: <b>".htmlentities($passwd)."</b><br>";
echo "If the status of the bug report you submitted\n";
echo "changes, you will be notified. You may return here and check on the status\n";
echo "or update your report at any time. The URL for your bug report is: <a href=\"http://bugs.php.net/?id=$cid\">";
echo "http://bugs.php.net/?id=$cid</a></p>\n";
} else {
echo "<p><h2>Mail not sent!</h2>\n";
echo "Please send this page in a mail to " .
"<a href=\"mailto:$mailto\">$mailto</a> manually.</p>\n";
}
}
}
elseif ($cmd == "display") {
show_menu($status);
echo "<hr />\n";
if (!$bug_type) $bug_type = "Any";
include("table_wrapper.inc");
function external_processing($fieldname,$tablename,$data,$row) {
switch($fieldname) {
case "id":
print "<a href=\"bugs.php?id=$data\">$data</a>\n";
break;
case "Originator":
print "<a href=\"mailto:$data\">$data</a>\n";
break;
case "Mod":
print "<a href=\"bugs.php?id=${row['id']}&edit=1\"><img src=\"gifs/small_submit.gif\" border=\"0\" width=\"11\" height=\"11\"></a>\n";
break;
case "Status":
if ($data == "Feedback") {
echo "Feedback<br>($row[unchanged_days] days)";
break;
}
/* otherwise fall through */
default:
echo htmlspecialchars($data);
break;
}
}
function row_coloring($row) {
if ($row["bug_type"]=="Feature/Change Request") {
return "#aaaaaa";
}
switch($row["Status"]) {
case "Open":
return "#ffbbaa";
break;
case "Critical":
return "#ff0000";
break;
case "Closed":
return "#aaffbb";
break;
case "Suspended":
return "#ffccbb";
break;
case "Assigned":
return "#bbaaff";
break;
case "Feedback":
return "#bbeeff";
break;
case "Analyzed":
return "#99bbaa";
break;
case "Duplicate":
return "#bbbbbb";
break;
default:
return "#aaaaaa";
break;
}
}
$external_processing_function="external_processing";
$row_coloring_function="row_coloring";
$tables[] = "bugdb";
$fields[] = "id";
$fields[] = "bug_type";
$fields[] = "status as Status";
$fields[] = "assign as Assigned";
$fields[] = "php_version as Version";
$fields[] = "php_os as Platform";
$fields[] = "sdesc as Description";
$fields[] = "id as Mod";
$fields[] = "TO_DAYS(NOW())-TO_DAYS(ts2) as unchanged_days";
$conversion_table["id"] = "ID#";
$conversion_table["bug_type"] = "Bug Type";
$pass_on = ereg_replace(" ","+","&amp;cmd=display&amp;status=$status&amp;bug_type=$bug_type");
$default_header_color="cccccc";
$centering["id"] = $centering["Mod"] = "center";
$dont_link["Mod"]=1;
$dont_display["unchanged_days"] = 1;
if (!isset($order_by_clause)) {
$order_by_clause = "id";
}
if($status=="All" && $bug_type=="Any") {
$where_clause = "bug_type!='Feature/Change Request'";
/* nothing */
} elseif($status=="All" && $bug_type!="Any") {
$where_clause = "bug_type='$bug_type'";
} else {
if($bug_type=="Any") {
$where_clause = "bug_type!='Feature/Change Request'";
} else {
$where_clause = "bug_type='$bug_type'";
}
/* Treat assigned, analyzed and critical bugs as open */
if($status=="Open") {
$where_clause .= " and (status='Open' or status='Assigned' or status='Analyzed' or status='Critical')";
} elseif($status=="OldFeedback") {
$where_clause .= " and status='Feedback' and TO_DAYS(NOW())-TO_DAYS(ts2)>60";
} else {
$where_clause .= " and status='$status'";
}
}
if(strlen($search_for)) {
$where_clause .= " and (email like '%$search_for%' or sdesc like '%$search_for%' or ldesc like '%$search_for%' or comments like '%$search_for%')";
}
// not supported by the HTML form yet : use the URL :)
if(isset($bug_age) && ($bug_age!="All")) {
$where_clause .= " and ts1 >= date_sub(now(), interval $bug_age day)";
}
if (strlen($where_clause)) {
$where_clause .= " and";
}
$where_clause .= " php_version like '4%'";
if(strlen($by) and $by!='Any') $where_clause .= " and dev_id = '$by' ";
table_wrapper();
echo "<br><center><a href=\"$PHP_SELF\">Submit a Bug Report</a></center>\n";
} elseif (!isset($cmd) && isset($id)) {
show_menu($status);
echo "<hr />\n";
# fetch the original bug into $original
$res = mysql_query("SELECT * FROM bugdb WHERE id=$id");
if ($res) $original = mysql_fetch_array($res);
if (!$res || !$original) {
echo "<h1 class=\"error\">No such bug #$id!</h1>";
commonFooter();
exit;
}
# handle any updates, displaying errors if there were any
$success = 0;
if ($modify == "user") {
if ($row[passwd] != $pw) {
echo "<h2 class=\"error\">The password you supplied was incorrect.</h2>\n";
}
elseif (incoming_details_are_valid()) {
/* update bug record */
$success = @mysql_query("UPDATE bugdb SET status='$estatus', bug_type='$bug_type', php_version='$php_version', php_os='$php_os', ts2=NOW(), email='$email' WHERE id=$id");
/* add comment */
if ($success && !empty($ncomment)) {
$success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$eemail',NOW(),'$ncomment')");
}
}
$from = $email;
}
elseif ($modify == "developer") {
if (!valid_login($user,$pw)) {
echo "<h2 class=\"error\">The username or password you supplied was incorrect.</h2>\n";
}
elseif (incoming_details_are_valid()) {
$success = @mysql_query("UPDATE bugdb SET sdesc='$sdesc',status='$status', bug_type='$bug_type', assign='$assign', dev_id='$user', php_version='$php_version', php_os='$php_os', ts2=NOW() WHERE id=$id");
if ($success && !empty($ncomment)) {
$success = @mysql_query("INSERT INTO bugdb_comments (bug, email, ts, comment) VALUES ($id,'$user@php.net',NOW(),'$ncomment')");
}
}
$from = "$user@php.net";
}
if ($modify && $success) {
# mail out the updated bug
$text = "ID: $id\n";
if ($modify == "developer") {
$text .= "Updated by: $user\n";
}
else {
$text .= "User updated by: $email\n";
}
$text.= "Reported By: $original[email]\n";
if ($sdesc != $original[sdesc])
$text .= "Old Summary: $original[sdesc]\n";
if ($status!=$original[status])
$text .= "Old Status: $original[status]\n";
$text.= "Status: $status\n";
if ($bug_type != $original[bug_type])
$text .= "Old Bug Type: $original[bug_type]\n";
$text.= "Bug Type: $bug_type\n";
if ($php_os != $original[php_os])
$text .= "Old Operating System: $original[php_os]\n";
$text.= "Operating System: $php_os\n";
if ($php_version != $original[php_version])
$text .= "Old PHP Version: $original[php_version]\n";
$text.= "PHP Version: $php_version\n";
if ($assign != $original[assign])
$text .= "Old Assigned To: $original[assign]\n";
$text.= "Assigned To: $assign\n";
if ($ncomment)
$text .= "New Comment:\n\n".stripslashes($ncomment);
$text.= get_old_comments($id);
$text.= "\n\nATTENTION! Do NOT reply to this email!\n";
$text.= "To reply, use the web interface found at http://bugs.php.net/?id=$id&edit=1\n";
$mailto = $mail_bugs_to . (eregi("documentation",$bug_type.$row[1]) ? ",phpdoc@lists.php.net" : "");
/* send mail if status was changed or there is a comment */
if ($status != $original[status] || $ncomment != "") {
@mail($original[email], "Bug #$id Updated: ".stripslashes($sdesc), $text, "From: Bug Database <$mail_bugs_to>\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>");
@mail($mailto, "Bug #$id Updated: ".stripslashes($sdesc), $text, "From: $from\nX-PHP-Bug: $id\nIn-Reply-To: <bug-$id@bugs.php.net>");
}
# display a happy success message
echo "<h2>Bug #$id updated successfully.</h2>\n";
}
elseif ($modify && !$success) {
echo "<h2 class=\"error\">Something went wrong updating the database.</h2>";
}
/* DISPLAY BUG */
if ($edit) {
echo "<form method=\"POST\" action=\"$PHP_SELF?id=$id\">\n";
echo "<input type=\"hidden\" name=\"edit\" value=\"$edit\" />\n";
}
if ($edit==1)
echo '<input type="hidden" name="modify" value="developer" />',"\n";
if ($edit==2)
echo '<input type="hidden" name="modify" value="user" />',"\n";
?>
<br />
<h1>Bug id #<?php echo $id?></h1>
<table>
<tr>
<th align="right">Status:</th>
<?php if ($edit) {?>
<td><select name="status"><?php show_state_options($status,0,$edit,$original[status])?></select>
<?php if ($edit == 1) {?>
<b>Assign To:</b> <input type="text" name="assign" size="10" maxlength="16" value="<?php echo $assign ? htmlspecialchars(stripslashes($assign)) : htmlspecialchars($original[assign])?>" /> <input type="submit" value="Submit Changes" /></td>
<?php } else { ?>
<font size="-1"><a href="<?php echo "$PHP_SELF?id=$id";?>&amp;edit=1"><tt>Dev Modify</tt></a></font></td>
<?php }?>
<?php } else { ?>
<td><?php echo $original[status]?></td>
<td><td><font size="-1"><a href="<?php echo "$PHP_SELF?id=$id";?>&amp;edit=2"><tt>User Modify</tt></a> &nbsp; <a href="<?php echo "$PHP_SELF?id=$id";?>&amp;edit=1"><tt>Dev Modify</tt></a></font></td>
<?php }?>
</tr>
<tr>
<th align="right">From:</th>
<?php if ($edit) {?>
<td><input type="text" name="email" size="20" maxlength="40" value="<?php echo $email ? htmlspecialchars(stripslashes($email)) : htmlspecialchars($original[email])?>" /></td>
<?php } else { ?>
<td><?php echo $original[email]?></td>
<?php }?>
</tr>
<tr>
<th align="right">Reported:</th>
<td><?php echo $original[ts1]?></td>
</tr>
<tr>
<th align="right">Type:</th>
<?php if ($edit) {?>
<td><select name="bug_type"><?php show_types($bug_type,0,$original[bug_type])?></select></td>
<?php } else { ?>
<td><?php echo $original[bug_type]?></td>
<?php }?>
</tr>
<tr>
<th align="right">OS:</th>
<?php if ($edit) {?>
<td><input type="text" name="php_os" size="20" maxlength="32" value="<?php echo $php_os ? htmlspecialchars(stripslashes($php_os)) : htmlspecialchars($original[php_os])?>" /></td>
<?php } else { ?>
<td><?php echo $original[php_os]?></td>
<?php }?>
</tr>
<tr>
<th align="right">PHP Version:</th>
<?php if ($edit) {?>
<td><input type="text" name="php_version" size="20" maxlength="100" value="<?php echo $php_version ? htmlspecialchars(stripslashes($php_version)) : htmlspecialchars($original[php_version])?>" /></td>
<?php } else { ?>
<td><?php echo $original[php_version]?></td>
<?php }?>
</tr>
<?php if ($original[assign] && !$edit) {?>
<tr>
<th align="right">Assigned To:</th>
<td><?php echo $original[assign]?></td>
</tr>
<?php }?>
<tr>
<th align="right">Summary:</th>
<?php if ($edit) {?>
<td><input type="text" name="sdesc" size="40" maxlength="80" value="<?php echo $sdesc ? htmlspecialchars(stripslashes($sdesc)) : htmlspecialchars($original[sdesc])?>" /></td>
<?php } else { ?>
<td><?php echo $original[sdesc]?></td>
<?php }?>
</tr>
<?php if ($edit) {?>
<tr>
<th align="right">New Comment:</th>
</tr>
<tr>
<td colspan="2">
<textarea name="ncomment" wrap="physical" cols="60" rows="15"><?php echo htmlspecialchars(stripslashes($ncomment));?></textarea>
</td>
</tr>
<?php if ($edit == 1) { /* developer */?>
<tr>
<th align="right">CVS Username:</th>
<td>
<input type="text" name="user" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($user));?>" />
</td>
</tr>
<?php }?>
<tr>
<th align="right">Password:</th>
<td>
<input type="<?php echo ($edit == 1) ? "password" : "text";?>" name="pw" size="10" maxlength="20" value="<?php echo htmlspecialchars(stripslashes($pw));?>" />
<?php if ($edit == 2) {?>
[<a href="bug-pwd-finder.php">Lost your password?</a>]
<?php }?>
</td>
</tr>
<tr>
<th align="right">Remember me:</th>
<td>
<input type="checkbox" name="save" />
(Check here to remember your password for next time.)
</td>
</tr>
<tr>
<td colspan="2">
&nbsp; &nbsp; &nbsp;
<input type="submit" value="Submit Changes" />
</td>
</tr>
<?php }?>
</table>
<?php
if ($edit) echo "</form>\n";
echo "<hr />\n";
/* ORIGINAL REPORT */
echo "<b><i>[$original[ts1]] $original[email]</i></b><br>\n";
echo "<blockquote><blockquote><pre>";
wrap(addlinks($original[ldesc]),90);
echo "</pre></blockquote></blockquote>\n";
/* OLD-STYLE DEVELOPER COMMENT */
if(strlen($original[comments])) {
echo "<b><i>[$original[ts2] $original[dev_id]@php.net</i></b><br>\n";
$text=addlinks($row[8]);
echo "<blockquote><blockquote><pre>";
wrap(addlinks($original[comments]),90);
echo "</pre></blockquote></blockquote>\n";
}
/* NEW-STYLE COMMENTS */
$query = "SELECT *,UNIX_TIMESTAMP(ts) AS my_when FROM bugdb_comments WHERE bug=$id ORDER BY ts";
if ($comresult = mysql_query($query)) {
while ($com = mysql_fetch_array($comresult)) {
echo "<b><i>[$com[ts]] $com[email]</i></b><br>\n";
echo "<blockquote><blockquote><pre>";
wrap(addlinks($com[comment]),90);
echo "</pre></blockquote></blockquote>\n";
}
}
commonFooter();
exit;
} elseif (!isset($cmd)) {
show_menu($status);
?>
Or use the form below to submit a new bug report.
<p><strong>Please</strong> read the <a href="bugs-dos-and-donts.php">Dos & Don'ts</a> before submitting a bug report!</p>
<p>To report bugs in <strong>PHP 3.0</strong>, please go <a href="/bugs-php3.php">here</a>.</p>
<p>To report problems with the <strong>PHP website</strong>, you should first try visiting another
<a href="/mirrors.php">mirror site</a> in case the problem is only with a specific mirror.
You should then report the problem (and the mirror(s) that have it) to
<a href="mailto:webmaster@php.net">webmaster@php.net</a>.</p>
<?php
}
echo "<hr />\n";
include 'bugform.inc';
?>
</font>
<?php
commonFooter();
/*
# MySQL dump 4.0
#
# Host: localhost Database: php3
#--------------------------------------------------------
DROP table bugdb;
CREATE TABLE bugdb (
id int(8) NOT NULL AUTO_INCREMENT,
bug_type char(32),
email varchar(40) NOT NULL,
sdesc varchar(80),
ldesc text,
php_version char(16),
php_os varchar(32),
status varchar(16),
comments text,# developer comment (deprecated)
ts1 datetime, # bug created date
ts2 datetime, # developer comment date (deprecated)
dev_id varchar(16),# developer who commented (deprecated)
assign varchar(16),
passwd varchar(20),# user password
PRIMARY KEY (id)
);
CREATE TABLE bugdb_comments (
id int(8) NOT NULL AUTO_INCREMENT,
bug int(8) NOT NULL,
email varchar(40) NOT NULL,
ts datetime NOT NULL,
comment text,
PRIMARY KEY (id)
);
*/
?>