SMS von Webseite (Formular) zu mir senden

tobi4

Member
Hallo,

ich möchte Besuchern meiner Webseite ein Formular zur Verfügung stellen (welches ich selbst mit PHP zusammenstellen möchte, damit ich bspw. die maximalen Formularnutzungen pro IP definieren kann und keine Werbeeinblendungen oder Standardformular vom Provider habe usw.), womit diese mir über die entsprechende Webseite eine SMS auf meine Handynummer schicken können. Die SMS bezahle ich dann natürlich.

Gibt es dafür einen Anbieter, oder geht das, so wie ich mir das vorstelle, nicht?

Danke & Gruß
 
Die meisten WebSMS-Anbieter bieten auch Web-Schnittstellen (meist per HTTP GET Abruf) welches einfach zb per file_get_contents("https://www.powervoip.com/myaccount/sendsms.php?username=xxxxxxxxxx​&password=xxxxxxxxxx&from=xxxxxxxxxx&to=xxxxxxxxxx&text=".$_POST['nachricht']); abgerufen wird.
(Ich hab hier die Betamax-Tochter PowerVoip wegen guenstiger Preise und persoenlicher Erfahrung angegeben, andere Anbieter sind aehnlich.

Allerdings solltest du die bereits erwaehnte IP-Sperre sowie ein Captcha (zb ReCaptcha) unbedingt einbauen sonst kannst du arm ge-sms't werden ;)
 
Gab erst kürzlich einen Thread zum Thema SMS Anbieter - musst Du mal suchen :)

Dort wurden einige Anbieter aufgelistet.

Gruß
Marcel
 
Hallo,

danke für die Infos.

Habe mich nun mal bei smstrade.de angemeldet.

Nun bräuchte ich noch jemanden, der mir das PHP-basierte Formular für den SMS-Versand von Besuchern meiner Seite auf meine Handynummer programmiert. Bitte mit Preisvorschlag per PN melden :-)

Danke & Gruß
 
PHP:
<?php
//CONFIG START

//Recaptcha Config
define("RECAPTCHA_PUBLIC","xxxx");
define("RECAPTCHA_PRIVATE","yyyy");

//Time interval to keep track of users in seconds
define("IP_THROTTLE_TIME",60*60*24);
//Amount of sent messages per time interval
define("IP_THROTTLE_COUNT",2);

//Database path
define("SQLITE_PATH",dirname(__FILE__).'/tracking.sqlite');


//Your SMS number including country prefix!
define("SMSTRADE_TO","003526917890XX");
//Length in SMS's (153 char par SMS unless single SMS = 160char)
define("SMSTRADE_MAXSMS",2); 
//SMSTRADE private key
define("SMSTRADE_KEY","xxxxx"); 
//SMSTRADE Route to use (basic, gold or direct)
define("SMSTRADE_ROUTE","basic");
//SMSTRADE from
define("SMSTRADE_FROM","003523694xx");

//CONFIG END



require_once('recaptchalib.php');
$error = false;
if(isset($_POST['message']) && isset($_POST['recaptcha_challenge_field']) && isset($_POST['recaptcha_response_field'])) {
	//Check ReCaptcha first
	if(!recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"])->is_valid) {
		$error = "Sicherheitscode inkorrekt";
	}
	//Open SQLite DB
	if(!$error) {
		$db_existed = file_exists(SQLITE_PATH);
		if($sqlite = sqlite_open(SQLITE_PATH,0666,$sqliteerror)) {
			if(!$db_existed) {
				sqlite_query($sqlite,"CREATE TABLE messages (from,content,timestamp)");
		}
		else $error = "Fehler beim &Ouml;ffnen der Datenbank: ".$sqliteerror;
	}
	//Check if user is throttled
	if(!$error) {
		$query = sqlite_query("SELECT ROWID FROM messages WHERE from = '".$_SERVER['REMOTE_ADDR']."' AND timestamp > '".(time()-IP_THROTTLE_TIME)."' LIMIT ".IP_THROTTLE_COUNT);
		if(sqlite_num_rows($query) == IP_THROTTLE_COUNT) $error = "Sie haben bereits Ihr Anfragelimit erreicht!";
	}
	
	//Akismet
	//- not implemented -
	
	//SMS Laenge
	if(!$error) {
		$maxchar = (SMSTRADE_MAXSMS == 1) ? 160 : 153 * SMSTRADE_MAXSMS;
		if(strlen($_POST['message']) > $maxchar) $error = "Sie haben die maximale Zeichenzahl &uuml;berschritten!";
		$multisms = (strlen($_POST['message']) > 160) ? true : false;
	}
	
	//Versenden der Nachricht
	if(!$error) {
		$check = @file_get_contents("http://gateway.smstrade.de/?key=".SMSTRADE_KEY."&to=".SMSTRADE_TO."&from=".SMSTRADE_FROM."&message".urlencode($_POST['message'])."&route=".SMSTRADE_ROUTE."&from=".urlencode(SMSTRADE_FROM).($multisms?"&concat=1":""));
		if(!$check) $error = "Konnte keine Verbindung zum SMS-Gateway herstellen!";
		if(trim($check) != 100) $error = "SMS konnte nicht versandt werden! (Code: ".$check.")";
	}
	
	//Eintragen in die DB
	if(!$error) {
		sqlite_query("INSERT INTO messages (from,content,timestamp) VALUES ('".$_SERVER['REMOTE_ADDR']."','".sqlite_escape_string($_POST['message'])."','".time()."')");
	}
}
?>
<html>
<head>
<title>Test</title>
</head>
<body>
<? if($error) { ?>
<div style="border:1px solid;"><?=$error;?></div>
<? } ?>
<form method="POST" action="">
	<textarea id="message" name="message" style="width:400px; height:100px;" onKeyUp="document.getElementById('message_counter').innerHTML = this.value.length;"><?=isset($_POST['message'])?$_POST['message']:'';?></textarea>
	<div id="message_counter"><noscript>Aktivieren Sie Javascript!</noscript><script type="text/javascript">document.getElementById('message_counter').innerHTML = document.getElementById('message').value.length;</script></div>
	<br>
	<?=recaptcha_get_html(RECAPTCHA_PUBLIC);?>
	<br>
	<input type="submit" value="Absenden">
</form>
</body>
</html>
MOD: PHP Tags gesetzt.
 
Last edited by a moderator:
Ungetestet und schnell zusammengeworfen
(Insbesonders die fehlende Moeglichkeit einen Absender an zu geben, keine Anbindung an Akismet, kein Design, keine Ueberpruefung der Parameter mittels Javascript beim Absenden, ... waeren verbesserungsfaehig)

PHP:
<?php
//CONFIG START

//Recaptcha Config
define("RECAPTCHA_PUBLIC","xxxx");
define("RECAPTCHA_PRIVATE","yyyy");

//Time interval to keep track of users in seconds
define("IP_THROTTLE_TIME",60*60*24);
//Amount of sent messages per time interval
define("IP_THROTTLE_COUNT",2);

//Database path
define("SQLITE_PATH",dirname(__FILE__).'/tracking.sqlite');


//Your SMS number including country prefix!
define("SMSTRADE_TO","003526917890XX");
//Length in SMS's (153 char par SMS unless single SMS = 160char)
define("SMSTRADE_MAXSMS",2); 
//SMSTRADE private key
define("SMSTRADE_KEY","xxxxx"); 
//SMSTRADE Route to use (basic, gold or direct)
define("SMSTRADE_ROUTE","basic");
//SMSTRADE from
define("SMSTRADE_FROM","003523694xx");

//CONFIG END



require_once('recaptchalib.php');
$error = false;
if(isset($_POST['message']) && isset($_POST['recaptcha_challenge_field']) && isset($_POST['recaptcha_response_field'])) {
	//Check ReCaptcha first
	if(!recaptcha_check_answer($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"])->is_valid) {
		$error = "Sicherheitscode inkorrekt";
	}
	//Open SQLite DB
	if(!$error) {
		$db_existed = file_exists(SQLITE_PATH);
		if($sqlite = sqlite_open(SQLITE_PATH,0666,$sqliteerror)) {
			if(!$db_existed) {
				sqlite_query($sqlite,"CREATE TABLE messages (from,content,timestamp)");
		}
		else $error = "Fehler beim &Ouml;ffnen der Datenbank: ".$sqliteerror;
	}
	//Check if user is throttled
	if(!$error) {
		$query = sqlite_query("SELECT ROWID FROM messages WHERE from = '".$_SERVER['REMOTE_ADDR']."' AND timestamp > '".(time()-IP_THROTTLE_TIME)."' LIMIT ".IP_THROTTLE_COUNT);
		if(sqlite_num_rows($query) == IP_THROTTLE_COUNT) $error = "Sie haben bereits Ihr Anfragelimit erreicht!";
	}
	
	//Akismet
	//- not implemented -
	
	//SMS Laenge
	if(!$error) {
		$maxchar = (SMSTRADE_MAXSMS == 1) ? 160 : 153 * SMSTRADE_MAXSMS;
		if(strlen($_POST['message']) > $maxchar) $error = "Sie haben die maximale Zeichenzahl &uuml;berschritten!";
		$multisms = (strlen($_POST['message']) > 160) ? true : false;
	}
	
	//Versenden der Nachricht
	if(!$error) {
		$check = @file_get_contents("http://gateway.smstrade.de/?key=".SMSTRADE_KEY."&to=".SMSTRADE_TO."&from=".SMSTRADE_FROM."&message".urlencode($_POST['message'])."&route=".SMSTRADE_ROUTE."&from=".urlencode(SMSTRADE_FROM).($multisms?"&concat=1":""));
		if(!$check) $error = "Konnte keine Verbindung zum SMS-Gateway herstellen!";
		if(trim($check) != 100) $error = "SMS konnte nicht versandt werden! (Code: ".$check.")";
	}
	
	//Eintragen in die DB
	if(!$error) {
		sqlite_query("INSERT INTO messages (from,content,timestamp) VALUES ('".$_SERVER['REMOTE_ADDR']."','".sqlite_escape_string($_POST['message'])."','".time()."')");
	}
}
?>
<html>
<head>
<title>Test</title>
</head>
<body>
<? if($error) { ?>
<div style="border:1px solid;"><?=$error;?></div>
<? } ?>
<form method="POST" action="">
	<textarea id="message" name="message" style="width:400px; height:100px;" onKeyUp="document.getElementById('message_counter').innerHTML = this.value.length;"><?=isset($_POST['message'])?$_POST['message']:'';?></textarea>
	<div id="message_counter"><noscript>Aktivieren Sie Javascript!</noscript><script type="text/javascript">document.getElementById('message_counter').innerHTML = document.getElementById('message').value.length;</script></div>
	<br>
	<?=recaptcha_get_html(RECAPTCHA_PUBLIC);?>
	<br>
	<input type="submit" value="Absenden">
</form>
</body>
</html>

Code unter Mozilla MPL
 
Back
Top