I'm really new to the whole networking side of things, so I don't know the backend very well. I wrote a series of PHP/AJAX scripts to allow a user to create a login account, but apparently my script is doing much much more than I imagined as I received an email from my admin this morning:
I think a core dump means my program had a fatal error, and I know my program is supposed to email me when there is an error. Granted, I was debugging the script last night, but I had no idea this was going on! Especially as my mailing code is the same code I have used before without issue.
I'm scared to run this code again even to test it, but I've been over it a million times, and I still have no clue what is causing this.
I would really appreciate any help!!!
List of scripts:
Here are my scripts:
ajax.js
[code=javascript]
/*************** *************** ****
Filename: ajax.js
Date: 02.25.08
*************** *************** ****/
/***** CREATE XMLHTTP OBJECT *****/
function request() {
var browser = navigator.appNa me; // get browser
var req = false;
if(browser == "Microsoft Internet Explorer") { // IE
try {
req = new ActiveXObject(" Msm12.XMLHTTP") ; // -- Msm12
} catch(err1) {
try {
req = new ActiveXObject(" Microsoft.XMLHT TP"); // -- Microsoft
} catch(err2) {
req = false; // FAIL!
}
}
} else {
try {
req = new XMLHttpRequest( ); // not IE
} catch(err) {
req = false;
}
}
return req;
}
var http = request(); // CREATE XMLHTTP object
var obj; // other variables
var obj2;
var url;
/***** SEND AJAX REQUEST *******/
function send_post(param s,use) {
http.open("POST ", url, true);
http.setRequest Header("Content-type", "applicatio n/x-www-form-urlencoded");
http.setRequest Header("Content-length", params.length);
http.setRequest Header("Connect ion", "close");
http.onreadysta techange = eval(use);
http.send(param s);
}
/*************** *************** *************** *************** *************** *****
***** USE FUNCTIONS *************** *************** *************** *************** *
*************** *************** *************** *************** *************** *****/
/***** FORM *****/
function form_response() {
var vobj = "v"+obj;
if(http.readySt ate == 4) {
if(http.status == 200) {
var data = http.responseTe xt.split(",");
if(data[0] == 2) { // no data -- do nothing
} else if(data[0] == 0) { // good data -- show check
document.getEle mentById(vobj). innerHTML = "<img class=\"form_im g\" src=\"../images/yes.png\"/>";
} else { // bad data -- show x and response
document.getEle mentById(vobj). innerHTML = data[1]+" <img class=\"form_im g\" src=\"../images/no.png\"/>";
}
} else {
document.getEle mentById(vobj). innerHTML = "No server response.";
//document.getEle mentsByName(obj )[0].className = "maybe";
}
} else {
document.getEle mentById(vobj). innerHTML = 'Checking...';
//document.getEle mentsByName(obj )[0].className = "maybe";
}
}
/***** REGISTER *****/
function register_respon se() {
obj = 'message'; // set div id
var msg = '';
if(http.readySt ate == 4) {
if(http.status == 200) {
var data = http.responseTe xt;
document.getEle mentById(obj).i nnerHTML = data;
} else {
document.getEle mentById(obj).i nnerHTML = "Unable to complete request.";
}
} else {
document.getEle mentById(obj).i nnerHTML = "Working";
}
}
/*************** *************** *************** *************** *************** *****
***** CHECK FUNCTIONS *************** *************** *************** **************
*************** *************** *************** *************** *************** *****/
/* EMAIL */
function check_email() {
url = "../Scripts/form_check.php" ;
obj = "email";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* USR */
function check_usr() {
url = "../Scripts/form_check.php" ;
obj = "usr";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* FIRST */
function check_first() {
url = "../Scripts/form_check.php" ;
obj = "first";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* LAST */
function check_last() {
url = "../Scripts/form_check.php" ;
obj = "last";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* PASSWORD */
function check_password( ) {
url = "../Scripts/form_check.php" ;
obj = "password";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
function check_confirm() {
url = "../Scripts/form_check.php" ;
obj = "confirm";
obj2 = "password";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value+
"&data2="+docum ent.getElements ByName(obj2)[0].value;
send_post(param s,"form_respons e"); }
}
/* REGISTER */
function register() {
url = "../Scripts/register.php";
if(document.get ElementsByName( 'usr')[0].value != 0 &&
document.getEle mentsByName('em ail')[0].value != 0 &&
document.getEle mentsByName('fi rst')[0].value != 0 &&
document.getEle mentsByName('la st')[0].value != 0) {
params = "usr="+document .getElementsByN ame('usr')[0].value+
"&email="+docum ent.getElements ByName('email')[0].value+
"&first="+docum ent.getElements ByName('first')[0].value+
"&last="+docume nt.getElementsB yName('last')[0].value;
send_post(param s,"register_res ponse");
}
}
/* LOGIN */
function login() {
url = "../Scripts/login.php";
if(document.get ElementsByName( 'name')[0].value != 0 &&
document.getEle mentsByName('pa ssword')[0].value != 0) {
params = "name="+documen t.getElementsBy Name('name')[0].value+
"&password="+do cument.getEleme ntsByName('pass word')[0].value;
send_post(param s,"register_res ponse");
}
}
[/code]
form_check.php
[code=php]
<?php
/*************** *************** ****
Filename: form_check.php
Date: 02.25.08
*************** *************** ****/
require_once(". ./Classes/Sys.php");
require_once(". ./Classes/Usr.php");
require_once(". ./Classes/UsrDB.php");
session_start() ;
header("Cache-control: private");
$db = new UsrDB($_SESSION['sys'],$_SESSION['usr']);
$return = "1,Invalid data";
if($_POST['data'] == '') {
echo "2,No data";
}
switch($_POST['object']) {
case "usr":
if($db->verify_usr($_P OST['data'])) {
$return = "1,Existing user name"; }
else {
$return = "0,Availabl e user name"; }
break;
case "email":
$find = "/[\w\d\_\-\.]*\@[\w\d\_\-\.]*\.(com|edu|gov |net|co)/";
if(!preg_match( $find,$_POST['data'])) {
$return = "1,Invalid email"; }
else {
if($db->verify_email($ _POST['data'])) {
$return = "1,Existing email"; }
else {
$return = "0,Availabl e email"; }
}
break;
case "first":
case "last":
$find = "/[^a-zA-Z]/";
if(preg_match($ find,$_POST['data'])) {
$return = "1,Invalid string"; }
else {
$return = "0,Valid string"; }
break;
case "password":
$find = "/\s/";
if(preg_match($ find,$_POST['data'])) {
$return = "1,Invalid password"; }
else {
$return = "0,Valid password"; }
break;
case "confirm":
if($_POST['data'] == $_POST['data2']) {
$return = "0,Password s match"; }
else {
$return = "1,Password s don't match"; }
break;
default:
break;
}
echo $return;
?>
[/code]
I'll have to put the last two files in the following post.
Your script located at .....Scripts/form_check.php has been moved to your account root. This script generated over 7000 emails that bounced back and forth on our server for an hour, which drive the load on this machine to inappropriate levels. Every time this script runs, it also core dumps on the server:
-rw------- 1 squeez7 squeez7 24M Mar 3 21:47 core.14811
-rw------- 1 squeez7 squeez7 24M Mar 3 21:51 core.15255
-rw------- 1 squeez7 squeez7 24M Mar 3 21:47 core.14811
-rw------- 1 squeez7 squeez7 24M Mar 3 21:51 core.15255
I'm scared to run this code again even to test it, but I've been over it a million times, and I still have no clue what is causing this.
I would really appreciate any help!!!
List of scripts:
- ajax.js
- form_check.php
- UsrDB.php
- BasicDB.php
Here are my scripts:
ajax.js
[code=javascript]
/*************** *************** ****
Filename: ajax.js
Date: 02.25.08
*************** *************** ****/
/***** CREATE XMLHTTP OBJECT *****/
function request() {
var browser = navigator.appNa me; // get browser
var req = false;
if(browser == "Microsoft Internet Explorer") { // IE
try {
req = new ActiveXObject(" Msm12.XMLHTTP") ; // -- Msm12
} catch(err1) {
try {
req = new ActiveXObject(" Microsoft.XMLHT TP"); // -- Microsoft
} catch(err2) {
req = false; // FAIL!
}
}
} else {
try {
req = new XMLHttpRequest( ); // not IE
} catch(err) {
req = false;
}
}
return req;
}
var http = request(); // CREATE XMLHTTP object
var obj; // other variables
var obj2;
var url;
/***** SEND AJAX REQUEST *******/
function send_post(param s,use) {
http.open("POST ", url, true);
http.setRequest Header("Content-type", "applicatio n/x-www-form-urlencoded");
http.setRequest Header("Content-length", params.length);
http.setRequest Header("Connect ion", "close");
http.onreadysta techange = eval(use);
http.send(param s);
}
/*************** *************** *************** *************** *************** *****
***** USE FUNCTIONS *************** *************** *************** *************** *
*************** *************** *************** *************** *************** *****/
/***** FORM *****/
function form_response() {
var vobj = "v"+obj;
if(http.readySt ate == 4) {
if(http.status == 200) {
var data = http.responseTe xt.split(",");
if(data[0] == 2) { // no data -- do nothing
} else if(data[0] == 0) { // good data -- show check
document.getEle mentById(vobj). innerHTML = "<img class=\"form_im g\" src=\"../images/yes.png\"/>";
} else { // bad data -- show x and response
document.getEle mentById(vobj). innerHTML = data[1]+" <img class=\"form_im g\" src=\"../images/no.png\"/>";
}
} else {
document.getEle mentById(vobj). innerHTML = "No server response.";
//document.getEle mentsByName(obj )[0].className = "maybe";
}
} else {
document.getEle mentById(vobj). innerHTML = 'Checking...';
//document.getEle mentsByName(obj )[0].className = "maybe";
}
}
/***** REGISTER *****/
function register_respon se() {
obj = 'message'; // set div id
var msg = '';
if(http.readySt ate == 4) {
if(http.status == 200) {
var data = http.responseTe xt;
document.getEle mentById(obj).i nnerHTML = data;
} else {
document.getEle mentById(obj).i nnerHTML = "Unable to complete request.";
}
} else {
document.getEle mentById(obj).i nnerHTML = "Working";
}
}
/*************** *************** *************** *************** *************** *****
***** CHECK FUNCTIONS *************** *************** *************** **************
*************** *************** *************** *************** *************** *****/
/* EMAIL */
function check_email() {
url = "../Scripts/form_check.php" ;
obj = "email";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* USR */
function check_usr() {
url = "../Scripts/form_check.php" ;
obj = "usr";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* FIRST */
function check_first() {
url = "../Scripts/form_check.php" ;
obj = "first";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* LAST */
function check_last() {
url = "../Scripts/form_check.php" ;
obj = "last";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
/* PASSWORD */
function check_password( ) {
url = "../Scripts/form_check.php" ;
obj = "password";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value;
send_post(param s,"form_respons e"); }
}
function check_confirm() {
url = "../Scripts/form_check.php" ;
obj = "confirm";
obj2 = "password";
if(document.get ElementsByName( obj)[0].value != '') {
var params = "object="+obj+" &data="+documen t.getElementsBy Name(obj)[0].value+
"&data2="+docum ent.getElements ByName(obj2)[0].value;
send_post(param s,"form_respons e"); }
}
/* REGISTER */
function register() {
url = "../Scripts/register.php";
if(document.get ElementsByName( 'usr')[0].value != 0 &&
document.getEle mentsByName('em ail')[0].value != 0 &&
document.getEle mentsByName('fi rst')[0].value != 0 &&
document.getEle mentsByName('la st')[0].value != 0) {
params = "usr="+document .getElementsByN ame('usr')[0].value+
"&email="+docum ent.getElements ByName('email')[0].value+
"&first="+docum ent.getElements ByName('first')[0].value+
"&last="+docume nt.getElementsB yName('last')[0].value;
send_post(param s,"register_res ponse");
}
}
/* LOGIN */
function login() {
url = "../Scripts/login.php";
if(document.get ElementsByName( 'name')[0].value != 0 &&
document.getEle mentsByName('pa ssword')[0].value != 0) {
params = "name="+documen t.getElementsBy Name('name')[0].value+
"&password="+do cument.getEleme ntsByName('pass word')[0].value;
send_post(param s,"register_res ponse");
}
}
[/code]
form_check.php
[code=php]
<?php
/*************** *************** ****
Filename: form_check.php
Date: 02.25.08
*************** *************** ****/
require_once(". ./Classes/Sys.php");
require_once(". ./Classes/Usr.php");
require_once(". ./Classes/UsrDB.php");
session_start() ;
header("Cache-control: private");
$db = new UsrDB($_SESSION['sys'],$_SESSION['usr']);
$return = "1,Invalid data";
if($_POST['data'] == '') {
echo "2,No data";
}
switch($_POST['object']) {
case "usr":
if($db->verify_usr($_P OST['data'])) {
$return = "1,Existing user name"; }
else {
$return = "0,Availabl e user name"; }
break;
case "email":
$find = "/[\w\d\_\-\.]*\@[\w\d\_\-\.]*\.(com|edu|gov |net|co)/";
if(!preg_match( $find,$_POST['data'])) {
$return = "1,Invalid email"; }
else {
if($db->verify_email($ _POST['data'])) {
$return = "1,Existing email"; }
else {
$return = "0,Availabl e email"; }
}
break;
case "first":
case "last":
$find = "/[^a-zA-Z]/";
if(preg_match($ find,$_POST['data'])) {
$return = "1,Invalid string"; }
else {
$return = "0,Valid string"; }
break;
case "password":
$find = "/\s/";
if(preg_match($ find,$_POST['data'])) {
$return = "1,Invalid password"; }
else {
$return = "0,Valid password"; }
break;
case "confirm":
if($_POST['data'] == $_POST['data2']) {
$return = "0,Password s match"; }
else {
$return = "1,Password s don't match"; }
break;
default:
break;
}
echo $return;
?>
[/code]
I'll have to put the last two files in the following post.
Comment