Internal Server Error(apache 服务器问题
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, 522362242@qq.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
我在运行由以下代码生成的login.cgi脚本,进行注册产生了以上错误,这是为什么啊?
// Fig. 19.21: login.cpp
// Program to output an XHTML form, verify the
// username and password entered, and add members.
#include <iostream>
using std::cerr;
using std::cin;
using std::cout;
using std::ios;
#include <fstream>
using std::fstream;
#include <string>
using std::string;
#include <cstdlib>
using std::getenv;
using std::atoi;
using std::exit;
void header();
void writeCookie();
int main()
{
char query[ 1024 ] = "";
string dataString = "";
// strings to store username and password
string userName = "";
string passWord = "";
int contentLength = 0;
bool newMember = false;
// data was posted
if ( getenv( "CONTENT_LENGTH" ) )
{
// retrieve query string
contentLength = atoi( getenv( "CONTENT_LENGTH" ) );
cin.read( query, contentLength );
dataString = query;
// find username location
int userLocation = dataString.find( "user=" ) + 5;
int endUser = dataString.find( "&" );
// find password location
int passwordLocation = dataString.find( "password=" ) + 9;
int endPassword = dataString.find( "&new" );
if ( endPassword > 0 ) // new membership requested
{
newMember = true;
passWord = dataString.substr(
passwordLocation, endPassword - passwordLocation );
} // end if
else // existing member
passWord = dataString.substr( passwordLocation );
userName = dataString.substr(
userLocation, endUser - userLocation );
} // end if
// no data was retrieved
if ( dataString == "" )
{
header();
cout << "<p>Please login.</p>";
// output login form
cout << "<form method = \"post\" action = \"/cgi-bin/login.cgi\">"
<< "<p>User Name: <input type = \"text\" name = \"user\"/><br/>"
<< "Password: <input type = \"password\" name = \"password\"/>"
<< "<br/>New? <input type = \"checkbox\" name = \"new\""
<< " value = \"1\"/></p>"
<< "<input type = \"submit\" value = \"login\"/></form>";
} // end if
else // process entered data
{
string fileUsername = "";
string filePassword = "";
bool userFound = false;
// open user data file for reading and writing
fstream userData( "userdata.txt", ios::in | ios::out);
if ( !userData ) // could not open file
{
cerr << "Could not open database.";
exit( 1 );
} // end if
// add new member
if ( newMember )
{
// read username and password from file
while ( !userFound && userData >> fileUsername >> filePassword )
{
if ( userName == fileUsername ) // name is already taken
userFound = true;
} // end while
if ( userFound ) // user name is taken
{
header();
cout << "<p>This name has already been taken.</p>"
<< "<a href=\"/cgi-bin/login.cgi\">Try Again</a>";
} // end if
else // process data
{
writeCookie(); // write cookie
header();
// write user data to file
userData.clear(); // clear eof, allow write at end of file
userData << "\n" << userName << "\n" << passWord;
cout << "<p>Your information has been processed."
<< "<a href=\"/cgi-bin/shop.cgi\">Start Shopping</a></p>";
} // end else
} // end if
else // search for password if entered
{
bool authenticated = false;
// read in user data
while ( !userFound && userData >> fileUsername >> filePassword )
{
// username was found
if ( userName == fileUsername )
{
userFound = true;
// determine whether password is correct
// and assign bool result to authenticated
authenticated = ( passWord == filePassword );
} // end if
} // end while
// user is authenticated
if ( authenticated )
{
writeCookie();
header();
cout << "<p>Thank you for returning, " << userName << "!</p>"
<< "<a href=\"/cgi-bin/shop.cgi\">Start Shopping</a>";
} // end if
else // user not authenticated
{
header();
if ( userFound ) // password is incorrect
cout << "<p>You have entered an incorrect password. "
<< "Please try again.</p>"
<< "<a href=\"/cgi-bin/login.cgi\">Back to login</a>";
else // user is not registered
cout << "<p>You are not a registered user.</p>"
<< "<a href=\"/cgi-bin/login.cgi\">Register</a>";
} // end else
} // end else
} // end else
cout << "</body>\n</html>\n";
return 0;
} // end main
// function to output header
void header()
{
cout << "Content-Type: text/html\n\n"; // output header
// output XML declaration and DOCTYPE
cout << "<?xml version = \"1.0\"?>"
<< "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" "
<< "\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
// output html element and some of its contents
cout << "<html xmlns = \"http://www.w3.org/1999/xhtml\">"
<< "<head><title>Login Page</title></head><body>";
} // end function header
// function to write cookie data
void writeCookie()
{
string expires = "Friday, 14-MAY-10 16:00:00 GMT";
cout << "Set-Cookie: CART=; expires=" << expires << "; path=\n";
} // end function writeCookie