#include #include #include #include void main () { fstream log_book; char buffer[1000]; char name[1000], email[1000], url[1000]; char comments[1000]; int i, j, ns, es, us, cs; char hold1, hold2, hold3, hold4; log_book.open ("log.html", ios::out | ios::in); log_book.seekp (0, ios::end); cin >> buffer; /* The default value (that is, if you don't use the ENCTYPE attribute at all) is ENCTYPE= "application/x-www-form-urlencoded". This should be used for cgi programs. When a string is encoded in the "x-www-form-urlencoded" form, this is what happens: The ASCII characters 'a' through 'z', 'A' through 'Z', and '0' through '9' remain the same. The space character ' ' is converted into a plus sign '+'. All other ASCII characters are converted into the 3-character string "%xy", where xy is the two-digit hexadecimal representation of the character code Line feeds are %0A and carriage returns are %0D The string that comes from the form looks like: name=value&name=value&name=value.... where "name" is the name of a field in the form and "value" is the character string in the field */ // Turn all +, &, LF, CR into blanks for (i=0; i<1000; i++) { if (buffer[i]=='+') buffer[i]=' '; if (buffer[i]=='&') buffer[i]=' '; if (buffer[i]=='%' && buffer[i+1]=='0' && buffer[i+2]=='A') buffer[i]=buffer[i+1]= buffer[i+2]=' '; if (buffer[i]=='%' && buffer[i+1]=='0' && buffer[i+2]=='D') buffer[i]=buffer[i+1]= buffer[i+2]=' '; } //%21 = ! //%22 = " //%23 = # //%24 = $ //%25 = % //%26 = & //%27 = ' //%28 = ( //%29 = ) //%2A = * //%2B = + //%2C = , //%2D = - //%2E = . //%2F = / //%3A = : //%3B = ; //%3C = < //%3D = = //%3E = > //%3F = ? //%40 = @ //%5B = [ //%5C = \ //%5D = ] //%5E = ^ //%5F = _ //%60 = ` //%7B = { //%7C = | //%7D = } //%7E = ~ for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='1') { buffer[i]='!'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='2') { buffer[i]='"'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='3') { buffer[i]='#'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='4') { buffer[i]='$'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='5') { buffer[i]='%'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='6') { buffer[i]=38; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='7') { buffer[i]='\''; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='8') { buffer[i]='('; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='9') { buffer[i]=')'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='A') { buffer[i]='*'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='B') { buffer[i]='+'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='C') { buffer[i]=','; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='D') { buffer[i]='-'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='E') { buffer[i]='.'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='2' && buffer[i+2]=='F') { buffer[i]='/'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='A') { buffer[i]=':'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='B') { buffer[i]=';'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='C') { buffer[i]='<'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='D') { buffer[i]='='; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='E') { buffer[i]='>'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='3' && buffer[i+2]=='F') { buffer[i]='?'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='4' && buffer[i+2]=='0') { buffer[i]='@'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='5' && buffer[i+2]=='B') { buffer[i]='['; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='5' && buffer[i+2]=='C') { buffer[i]='\\'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='5' && buffer[i+2]=='D') { buffer[i]=']'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='5' && buffer[i+2]=='E') { buffer[i]='^'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='5' && buffer[i+2]=='F') { buffer[i]='_'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='6' && buffer[i+2]=='0') { buffer[i]='`'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='7' && buffer[i+2]=='B') { buffer[i]='{'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='7' && buffer[i+2]=='C') { buffer[i]='|'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='7' && buffer[i+2]=='D') { buffer[i]='}'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } for (i=0; i<1000; i++) { if (buffer[i]=='%' && buffer[i+1]=='7' && buffer[i+2]=='E') { buffer[i]='~'; for (j=i+1; j<998; j++) { buffer[j]=buffer[j+2]; } } } // Isolate the Name, Email, Url, // and Comment strings for (i=0; i<1000; i++) { if (buffer[i]=='N' && buffer[i+1]=='=') ns=i+2; if (buffer[i]=='E' && buffer[i+1]=='=') es=i+2; if (buffer[i]=='U' && buffer[i+1]=='=') us=i+2; if (buffer[i]=='C' && buffer[i+1]=='=') cs=i+2; } for (i=0; i<1000; i++) { name[i]=buffer[ns+i]; if (ns+i+1 == es-2) { name[i+1]='\0'; break; } } for (i=0; i<1000; i++) { email[i]=buffer[es+i]; if (es+i+1 == us-2) { email[i+1]='\0'; break; } } for (i=0; i<1000; i++) { url[i]=buffer[us+i]; if (us+i+1 == cs-2) { url[i+1]='\0'; break; } } for (i=0; i<750; i++) { comments[i]=buffer[cs+i]; } log_book << "
"; log_book << "NAME: " << name << "
"; log_book << "E-MAIL ADDRESS: "; log_book << "" << email; log_book << "" << "
"; log_book << "URL: "; log_book << "" << url; log_book << "" << "
"; log_book << "Comment or Message: " << comments << "
"; log_book << endl; cout << "Content-type: text/html\n\n"; cout << ""; cout << ""; cout << "Posting a message to the message board... "; cout << ""; cout << ""; cout << "

"; cout << "Thank you for your contribution to the "; cout << ""; cout << "log book."; cout << "

"; cout << "
"; cout << "NAME: " << name << "
"; cout << "E-MAIL ADDRESS: "; cout << "" << email; cout << "" << "
"; cout << "URL: "; cout << "" << url; cout << "" << "
"; cout << "Comment or Message: " << comments << "
"; cout << endl; cout << ""; cout << ""; }