Jump to content

Creating loop to send sms more than one recipient. HELP

Recommended Posts

Hello! I wanna create a form that can send sms to multiple recipient, i've created a form that uses javascript to add or remove textbox dynamically, this code successfully send sms when i fill one recipient number, but fails to send more than one recipient, and as i try to make it send sms to more than one user by making it loop, i get this error, Can someone help? i want to know how do i make this form sends sms towards multiple user Warning: Invalid argument supplied for foreach()

<script language="javascript">		function addRow(tableID) {			var table = document.getElementById(tableID);			var rowCount = table.rows.length;			var row = table.insertRow(rowCount);			var cell1 = row.insertCell(0);			var element1 = document.createElement("input");			element1.type = "checkbox";			element1.name="chkbox[]";			cell1.appendChild(element1);			var cell2 = row.insertCell(1);			cell2.innerHTML = rowCount + 1;			var cell3 = row.insertCell(2);			var element2 = document.createElement("input");			element2.type = "text";			element2.name = "CTL_TEL";			cell3.appendChild(element2); 		}		function deleteRow(tableID) {			try {			var table = document.getElementById(tableID);			var rowCount = table.rows.length;			for(var i=0; i<rowCount; i++) {				var row = table.rows[i];				var chkbox = row.cells[0].childNodes[0];				if(null != chkbox && true == chkbox.checked) {					table.deleteRow(i);					rowCount--;					i--;				} 			}			}catch(e) {				alert(e);			}		}	</SCRIPT> <?php error_reporting(E_ALL ^ E_NOTICE);//Example$gsm_send_sms = new gsm_send_sms();$gsm_send_sms->debug = false;$gsm_send_sms->port = 'COM6';$gsm_send_sms->baud = 115200;$gsm_send_sms->init();$name="CTL_TEL[]";foreach ($tel as $_POST['CTL_TEL']) {$status = $gsm_send_sms->send($_POST["CTL_TEL"] , $_POST["CTL_MSG"]);$status = $gsm_send_sms->send($tel , $_POST["CTL_MSG"]); if ($status) {	echo "Message sent\n";} else {	echo "Message not sent\n";}}$gsm_send_sms->close();  //Send SMS via serial SMS modemclass gsm_send_sms {	public $port = 'COM6';	public $baud = 115200;	public $debug = false;	private $fp;	private $buffer;	//Setup COM port	public function init() {		$this->debugmsg("Setting up port: \"{$this->port} @ \"{$this->baud}\" baud");		exec("MODE {$this->port}: BAUD={$this->baud} PARITY=N DATA=8 STOP=1", $output, $retval);		if ($retval != 0) {			throw new Exception('Unable to setup COM port, check it is correct');		}		$this->debugmsg(implode("\n", $output));		$this->debugmsg("Opening port");		//Open COM port		$this->fp = fopen($this->port . ':', 'r+');		//Check port opened		if (!$this->fp) {			throw new Exception("Unable to open port \"{$this->port}\"");		}		$this->debugmsg("Port opened");		$this->debugmsg("Checking for responce from modem");		//Check modem connected		fputs($this->fp, "AT\r");		//Wait for ok		$status = $this->wait_reply("OK\r\n", 5);		if (!$status) {			throw new Exception('Did not receive responce from modem');		}		$this->debugmsg('Modem connected');		//Set modem to SMS text mode		$this->debugmsg('Setting text mode');		fputs($this->fp, "AT+CMGF=1\r");		$status = $this->wait_reply("OK\r\n", 5);		if (!$status) {			throw new Exception('Unable to set text mode');		}		$this->debugmsg('Text mode set');	}	//Wait for reply from modem	private function wait_reply($expected_result, $timeout) {		$this->debugmsg("Waiting {$timeout} seconds for expected result");		//Clear buffer		$this->buffer = '';		//Set timeout		$timeoutat = time() + $timeout;		//Loop until timeout reached (or expected result found)		do {			$this->debugmsg('Now: ' . time() . ", Timeout at: {$timeoutat}");			$buffer = fread($this->fp, 1024);			$this->buffer .= $buffer;			usleep(200000);//0.2 sec			$this->debugmsg("Received: {$buffer}");			//Check if received expected responce			if (preg_match('/'.preg_quote($expected_result, '/').'$/', $this->buffer)) {				$this->debugmsg('Found match');				return true;				//break;			} else if (preg_match('/\+CMS ERROR\:\ \d{1,3}\r\n$/', $this->buffer)) {				return false;			}		} while ($timeoutat > time());		$this->debugmsg('Timed out');		return false;	}	//Print debug messages	private function debugmsg($message) {		if ($this->debug == true) {			$message = preg_replace("%[^\040-\176\n\t]%", '', $message);			echo $message . "\n";		}	}	//Close port	public function close() {		$this->debugmsg('Closing port');		fclose($this->fp);	}	//Send message	public function send($tel, $message) {		//Filter tel		$tel = preg_replace("%[^0-9\+]%", '', $tel);		//Filter message text		$message = preg_replace("%[^\040-\176\r\n\t]%", '', $message);		$this->debugmsg("Sending message \"{$message}\" to \"{$tel}\"");		//Start sending of message		fputs($this->fp, "AT+CMGS=\"{$tel}\"\r");		//Wait for confirmation		$status = $this->wait_reply("\r\n> ", 5);		if (!$status) {			//throw new Exception('Did not receive confirmation from modem');			$this->debugmsg('Did not receive confirmation from modem');			return false;		}		//Send message text		fputs($this->fp, $message);		//Send message finished indicator		fputs($this->fp, chr(26));		//Wait for confirmation		$status = $this->wait_reply("OK\r\n", 180);		if (!$status) {			//throw new Exception('Did not receive confirmation of messgage sent');			$this->debugmsg('Did not receive confirmation of messgage sent');			return false;		}		$this->debugmsg("Message sent");		return true;	}}?>  <html><head><title>SMS via GSM</title><meta content="text/html; charset=UTF-8" http-equiv="Content-Type"><style>   .clbody {   font-family:Verdana, Arial, Helvetica, sans-serif;   font-size:9pt;   font-weight:normal;}.clfooter {   font-family:Verdana;   font-size:7pt;   font-weight:normal;}h1, .h1 {   width:100%;   font-family:Verdana, Arial, Helvetica, sans-serif;   font-size:18px;   font-weight:bold;}hr, .hr {   color:#b0b0b0;}</style></head><body class="clbody"><h1>SMS via GSM</h1><div style="WIDTH:700px"></div><hr size="1"><?phperror_reporting(E_ALL ^ E_NOTICE);?><form action="" method="post" name="myForm"><table class ="clbody" width="700" border="1">   <tr>	  <td valign="top">Recipient:</td>	  <td valign="top">	  <INPUT type="button" value="Add Row" onclick="addRow('dataTable')" />	<INPUT type="button" value="Delete Row" onclick="deleteRow('dataTable')" />	<TABLE id="dataTable" width="350px" border="1">		<TR>			<TD><INPUT type="checkbox" name="chk"/></TD>			<TD> 1 </TD>			<TD> <input type="text" name="CTL_TEL" value="<?php  echo $_GET['CTL_TEL']; ?>"> </TD>		</TR>	</TABLE> 	 </td>   </tr>   <tr>	  <td valign="top">Message:</td>	  <td valign="top"> 	  <input style="width: 250px" type="text" name="CTL_MSG" value="<?php echo $_GET['CTL_MSG']; ?>"></td>     </tr>	  <tr>	  <td valign="top">Result code:<font color=green></td>	  <td valign="top"></td>   </tr>     <tr>	  <td valign="top"> </td>	  <td valign="top"><input size="25" type="submit" value="Send" name="CTL_SEND" style="height: 23px; width: 250px"></td>   </tr></table><br><br></form></body></html>

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...