Tutorial: Receber SMS pela web

  • Autor Autor Cicklow
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
Cicklow

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Suscripción a IA
Olá, hoje vocês aprenderão como criar nosso próprio script para receber SMS pela web, isso nos permitirá ter nossos próprios números para verificar contas do Google, Facebook e outras mais, ou por exemplo vender números no fiverr (montando bem nosso sistema)!

Para este tutorial usaremos NEXMO (uma empresa que já utilizamos antes em nosso tutorial de como enviar SMS), nos registraremos na empresa e compraremos nosso primeiro número (pagaremos com paypal).

Passo 1 - Comprar e Configurar nosso número
Iremos a: https://dashboard.nexmo.com/private/numbers#add_number e colocaremos estas opções (eu comprei um número dos EUA, vocês comprem o que mais gostarem)
1-46265a2.png


Ao clicar no botão Search aparecerá uma lista de números disponíveis, clicamos em BUY no que mais gostarmos XD.
Agora configuraremos a url onde os SMS serão recebidos. Neste caso nosso callback.php
2-46265a8.png


Passo 2 - Programar tudo
Criamos um arquivo chamado callback.php e colocamos este código:
PHP:
<?php
	$data = $_GET; //Obtenemos los datos del SMS
	if(!isset($data['text'], $data['to'])) die("0"); //si alguno de los necesarios esta vacio cerramos el PHP

	include('db.php'); //agregamos el archivo encargado de conectarse a la base de datos
	$mysqli->query("INSERT INTO sms_entrar VALUES('','".strip_tags($data['to'])."','".strip_tags($data['msisdn'])."','".time()."','".strip_tags($data['text'])."');"); //guardamos el SMS
	die("1"); //finalizamos el PHP
?>
Ajuda sobre receber SMS: https://docs.nexmo.com/index.php/sms-api/handle-inbound-message

Agora criaremos o arquivo db.php, encarregado de conectar-se ao nosso banco de dados
PHP:
<?
	

	$dbhost = "localhost";
	$dbuser = "USUARIO";
	$dbpass = "PASS";
	$db = "BASE_DATOS";
	$mysqli = new mysqli("$dbhost","$dbuser","$dbpass","$db");
	if ($mysqli->connect_errno) {
		die("Failed to establish a connection with the database");
	}
?>

Nossa tabela mysql será:
HTML:
CREATE TABLE IF NOT EXISTS `sms_entrar` (
  `id` double NOT NULL AUTO_INCREMENT,
  `smsto` varchar(35) NOT NULL,
  `smsfrom` varchar(35) NOT NULL,
  `time` int(11) NOT NULL,
  `msg` varchar(200) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Para isso acessamos o phpmyadmin, criamos um banco de dados (se é que não temos algum) depois vamos à aba SQL e colocamos o código anterior!

Criamos index.php, o encarregado de mostrar nossos SMS.
PHP:
<!DOCTYPE html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Recibir SMS</title>

    <!-- Bootstrap -->
    <link rel="stylesheet" href="http://getbootstrap.com/dist/css/bootstrap.min.css" />

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
      <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
<div class="container">
	<h1>SMS Recibidos!</h1>
	<table class="table table-striped">
		<thead>
			<tr><td>ID</td><td>Desde</td><td>Para</td><td>Fecha</td><td>Mensaje</td></tr>
		</thead>
		<tbody>

		<?php
			include('db.php'); //cargamos nuestro archivo encargado de conectar la bd
			//Vemos si mostramos los SMS de un numero en concreto o todos
			if($_GET['para']!="") $para = 'smsto=\''.strip_tags($_GET['para']).'\''; else $para = "1";
			//Obtenemos los SMS
			$sms = $mysqli->query("SELECT * FROM sms_entrar WHERE ".$para." ORDER BY id DESC LIMIT 0,100");
			//Recorremos la variable $sms y mostramos los SMS
			while ($ROW = $sms->fetch_assoc()) {
				echo '<tr><td>'.$ROW['id'].'</td><td>'.$ROW['smsfrom'].'</td><td>'.$ROW['smsto'].'</td><td>'.calculart($ROW['time']).'</td><td style="word-wrap: break-word;">'.wordwrap($ROW['msg'], 100, "<br />\n", true).'</td></tr>';
			}
		?>
		</tbody>
	</table>
</div>
  </body>
</html>
<?php
	//funcion encargada de calcular el tiempo de cada sms
	function calculart($ptime) {
		$etime = time() - $ptime;

		if ($etime < 1) {
			return '0 seconds';
		}
    
		$a = array( 12 * 30 * 24 * 60 * 60  =>  'a&ntilde;o',
                	30 * 24 * 60 * 60       =>  'mes',
                	24 * 60 * 60            =>  'dia',
                	60 * 60                 =>  'hora',
                	60                      =>  'minuto',
                	1                       =>  'segundo'
		);
    
		foreach ($a as $secs => $str) {
			$d = $etime / $secs;
			if ($d >= 1) {
				$r = round($d);
				return 'hace '.$r . ' ' . $str . ($r > 1 ? 's' : '');
			}
		}
	}
?>
E ficaria desta forma:
3-46265be.png


Passo 3 - DICAS
- Para ver os SMS de um número em questão só acessamos nosso index.php colocando a variável para. exemplo:
Inserir CODE, HTML ou PHP:
http://test.cicklow.me/ForoBeta/recibir/?para=19853180522
- Se vão vender números no fiverr têm duas opções, criar uma pasta para cada usuário ou passar a url com o número que compraram (dica anterior) (terão que editar o index.php para que não mostre os SMS de todos, mas apenas o do número selecionado)
- Podem usar este script para uso próprio para verificar contas de youtube, google, etc ou o que mais gostarem
- Se decidirem montar um site sobre isso, pois terá que fazer mais modificações, eu só dou o ponto de partida.
- Os números no NEXMO são cobrados a cada 30 dias (exemplo o dos EUA sai 0,67EUROS, isso é cobrado quando se compra e a cada 30 dias de uso, estes números podem ser cancelados, exemplo no fiverr podem vender os números por 30 dias)
- NEXMO não cobra por SMS recebido, outras empresas sim! (a razão de 0,0045USD por SMS recebido)


Download:
Inserir CODE, HTML ou PHP:
http://test.cicklow.me/ForoBeta/recibir/recibir.rar
Demo:
Inserir CODE, HTML ou PHP:
http://test.cicklow.me/ForoBeta/recibir/
Demo com um número:
Inserir CODE, HTML ou PHP:
http://test.cicklow.me/ForoBeta/recibir/?para=19853180522
Abraços!​

PS: Se vão usar vários números, usem este código no index.php
mudam:
PHP:
<div class="container">
    <h1>SMS Recibidos!</h1>
    <table class="table table-striped">
        <thead>
            <tr><td>ID</td><td>Desde</td><td>Para</td><td>Fecha</td><td>Mensaje</td></tr>
        </thead>
        <tbody>

        <?php
            include('db.php'); //cargamos nuestro archivo encargado de conectar la bd
            //Vemos si mostramos los SMS de un numero en concreto o todos
            if($_GET['para']!="") $para = 'smsto=\''.strip_tags($_GET['para']).'\''; else $para = "1";
            //Obtenemos los SMS
            $sms = $mysqli->query("SELECT * FROM sms_entrar WHERE ".$para." ORDER BY id DESC LIMIT 0,100");
            //Recorremos la variable $sms y mostramos los SMS
            while ($ROW = $sms->fetch_assoc()) {
                echo '<tr><td>'.$ROW['id'].'</td><td>'.$ROW['smsfrom'].'</td><td>'.$ROW['smsto'].'</td><td>'.calculart($ROW['time']).'</td><td style="word-wrap: break-word;">'.wordwrap($ROW['msg'], 100, "<br />\n", true).'</td></tr>';
            }
        ?>
        </tbody>
    </table>
</div>

por

PHP:
<?php if($_GET[para]==""){ ?>
<div class="container">
    <h1>Numeros!</h1>
    <table class="table table-striped">
        <thead>
            <tr><td>Numero</td><td>Accion</td></tr>
        </thead>
        <tbody>
        <?php
		include('db.php'); //cargamos nuestro archivo encargado de conectar la bd
		$sms = $mysqli->query("SELECT DISTINCT smsto FROM sms_entrar WHERE 1 ORDER BY smsto");
		//Recorremos la variable $sms y mostramos los SMS
            	while ($ROW = $sms->fetch_assoc()) {
                	echo '<tr><td>'.$ROW['smsto'].'</td><td><a href="?para='.$ROW['smsto'].'">Ver SMS</a></td></tr>';
            	}
        ?>
        </tbody>
    </table>
</div>
<?php }else{ ?>
<div class="container">
    <h1>SMS Recibidos!</h1>
    <table class="table table-striped">
        <thead>
            <tr><td>ID</td><td>Desde</td><td>Para</td><td>Fecha</td><td>Mensaje</td></tr>
        </thead>
        <tbody>

        <?php
            include('db.php'); //cargamos nuestro archivo encargado de conectar la bd
            //Vemos si mostramos los SMS de un numero en concreto o todos
            if($_GET['para']!="") $para = 'smsto=\''.strip_tags($_GET['para']).'\''; else $para = "1";
            //Obtenemos los SMS
            $sms = $mysqli->query("SELECT * FROM sms_entrar WHERE ".$para." ORDER BY id DESC LIMIT 0,100");
            //Recorremos la variable $sms y mostramos los SMS
            while ($ROW = $sms->fetch_assoc()) {
                echo '<tr><td>'.$ROW['id'].'</td><td>'.$ROW['smsfrom'].'</td><td>'.$ROW['smsto'].'</td><td>'.calculart($ROW['time']).'</td><td style="word-wrap: break-word;">'.wordwrap($ROW['msg'], 100, "<br />\n", true).'</td></tr>';
            }
        ?>
        </tbody>
    </table>
</div>
<?php } ?>

PS: NEXMO mudou suas políticas e não permite este tipo de script massivos (colocá-lo para outros)... talvez para uso pessoal funcione bem, há números que não funcionam com facebook, e outras redes sociais... Tenham isso em conta...
Outro site para usar é: https://www.tropo.com/ para comprar números...
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Muito bom... vou ler com mais calma... hehehe

:encouragement:

Abraços,,,
 
Te amo Cicklow 🙄, mas pelas suas contribuições :topsy_turvy:

Agora já não vou colocar meu número nessas páginas 😉
 
Última edição:
Muito bom :encouragement:
 
O envio de SMS para celulares é grátis?
 
Uma dúvida, esses números já foram usados por outras pessoas? :encouragement:


O outro tutorial? não... são pagos! neste tutorial, os SMS recebidos são grátis!
 
O outro tutorial? não... são pagos! neste tutorial, os SMS recebidos são grátis!

Sim sim, desculpa, já vi... mas mesmo assim saem muito baratos... serve para todo mundo? porque se for assim, isso pode ser muito bom!
 
Sim sim, desculpa, já vi... mas mesmo assim saem muito baratos... serve para todo mundo? porque se for assim, isso pode ser muito bom!
Sim, para a lista de países que se encontra lá.

Uma dúvida, esses números já foram usados por outras pessoas? :encouragement:
Sim, não são únicos, tenha em conta que um número único custa uns 200E a 500E por mês.
 
[MENTION=9679]cicklow[/MENTION] , amigo, como posso cobrar daqueles que enviam mensagens???
 
[MENTION=9679]cicklow[/MENTION] , amigo, como posso cobrar daqueles que enviam mensagens???

Este tutorial é para receber SMS, não para enviar, para enviar tem o outro tutorial... e para cobrar, você pode usar PayPal ou Bitcoins, eu usava esses 2!
 
Ganhou minha curtida pela acelga, haha
 
Excelente para quem cria canais diariamente, bom tutorial Cicklow, obrigado
 
Caramba, excelente tutorial amigo [MENTION=9679]cicklow[/MENTION], vai me servir muito para verificar umas coisinhas pendentes que tenho por aí :encouragement:

Te mandei um SMS para o seu número da página e chegou na hora, pelo que vi, se chega no momento... há um tempo testei um e demorava anos para chegar a mensagem, mas com este não

Valeu :encouragement:

---------- Post adicionado em 11-jun-2014 hora: 22:41 ----------

yqajamev.jpg


Enviado do meu XT1032 através do Tapatalk
 
Caramba, excelente tutorial amigo [MENTION=9679]cicklow[/MENTION], vai me servir muito para verificar umas coisinhas pendentes que tenho por aí :encouragement:

Te mandei um SMS para o seu número da página e chegou na hora, pelo que vi, se chega no momento... há um tempo testei um e demorava anos para chegar a mensagem, mas com este não

Valeu :encouragement:

🙂 precisa que eu edite seu número de celular?
 
🙂 precisa que eu edite seu número de celular?

aaa verdade, não notei que o número aparece claro do lado esquerdo, haha :ambivalence:

sim por favor, não quero receber assédio hehe mas sim por favor :encouragement:
 
aaa verdade, não notei que o número aparece claro do lado esquerdo, haha :ambivalence:

sim por favor, não quero receber assédio hehe mas sim por favor :encouragement:

Pronto, agora podem fazer testes, já que não mostra mais o número completo do qual recebe o SMS 🙂
 
Pronto, agora podem fazer testes, já que não mostra mais o número completo do qual recebe o SMS 🙂

amigo, acabei de te mandar outra mensagem de teste mas agora não apareceu, verifica o que aconteceu
 
amigo, acabei de te mandar outra mensagem de teste mas agora não apareceu, verifica o que aconteceu

Do mesmo número? que estranho... vou ver... o script não sofreu mudança alguma, só a parte de mostrar o SMS...
 
Voltar
Topo