Integratie SMS-systeem in script
ik heb een klein probleempje dat ik graag nog dit weekend wil oplossen. ik ben bezig met het intergreren van een sms api maar nu heb ik dus het volgende probleem met mijn script, de sms api maakt gebruik van sub-accounts dus als ik een sms wil versturen moet dat door middel van een username en password. maar in de voorbeeld documentatie van de api staat dat allemaal inclusief het bericht die je wilt versturen in je script dus het zit allemaal al in mijn script verwerkt, dat moet natuurlijk niet anders moet ik steeds in mijn server gaan en mijn code aanpassen per bericht die ik verstuur. dus ik heb een aantal input fields waarvan die data doorgegeven moet worden aan de api (account details, nummer, en bericht) maar ik krijg het maar niet voor elkaar. kan iemand mij alsjeblieft helpen, ik ben geen pro in php ben er pas een jaar mee bezig dus als iemand mij code zou willen aanpassen naar hoe ik het wil en een uitleg erbij wat ik fout heb gedaan zou dat erg fijn zijn! :)
zo ziet mijn code er als volgt uit (heb verschillende dingen geprobeerd er zal vast iets zijn wat ik over het hoofd heb gezien):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?php
if(isset($_POST['submit'])){
$post_data=array(
'sub_account'=>$_POST["user"]),
'sub_account_pass'=>$_POST["pass"]),
'action'=>'send_sms',
'sender_id'=>"",
'recipients'=>$_POST["nummer"]),
'message'=>$_POST["text"]),
);
$api_url='dit is de link van mijn sms gateway maar die laat ik niet zien';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($response_code != 200)$response=curl_error($ch);
curl_close($ch);
if($response_code != 200)$msg="HTTP ERROR $response_code: $response";
else
{
$json=@json_decode($response,true);
if($json===null)$msg="INVALID RESPONSE: $response";
elseif(!empty($json['error']))$msg=$json['error'];
else
{
$msg="SMS sent to ".$json['total']." recipient(s).";
$sms_batch_id=$json['batch_id'];
}
}
echo $msg;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ADMIN control panel</title>
<link href="css/stylesmssenden.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
</head>
<body class="loggedin">
<nav class="navtop">
<div>
<h1>ADMIN</h1>
<a href="profile.php"><i class="fas fa-user-circle"></i>Profile</a>
<a href="logout.php"><i class="fas fa-sign-out-alt"></i>Logout</a>
</div>
</nav>
<div class="content">
<h2>sms verzenden</h2>
<div class="form-container">
<form action="" method="POST">
username:<input name="user" type="text">
<br>
wachtwoord:<input type="password" name="pass">
<br>
nummers:
<br>
<textarea type="tel" placeholder="(+)31642222222" name="nummer" ></textarea>
<br>
text:
<br>
<textarea type="text" id="berichtinput" name="text" placeholder="SMS bericht tot 160 tekens"></textarea>
<br>
<input type="submit" name="submit" value="verzenden">
</form>
</div>
</div>
<div class="dashboard">
<ul>
<li><a href="home.php">home</a></li>
<br>
<li><a href="adduser.php">accounts DB</a></li>
<br>
<li><a href="smsverzenden.php">sms verzenden</a></li>
<br>
<li><a href="#">chat (onder constructie)</a></li>
</ul>
</div>
<body>
</html>
if(isset($_POST['submit'])){
$post_data=array(
'sub_account'=>$_POST["user"]),
'sub_account_pass'=>$_POST["pass"]),
'action'=>'send_sms',
'sender_id'=>"",
'recipients'=>$_POST["nummer"]),
'message'=>$_POST["text"]),
);
$api_url='dit is de link van mijn sms gateway maar die laat ik niet zien';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($response_code != 200)$response=curl_error($ch);
curl_close($ch);
if($response_code != 200)$msg="HTTP ERROR $response_code: $response";
else
{
$json=@json_decode($response,true);
if($json===null)$msg="INVALID RESPONSE: $response";
elseif(!empty($json['error']))$msg=$json['error'];
else
{
$msg="SMS sent to ".$json['total']." recipient(s).";
$sms_batch_id=$json['batch_id'];
}
}
echo $msg;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ADMIN control panel</title>
<link href="css/stylesmssenden.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.1/css/all.css">
</head>
<body class="loggedin">
<nav class="navtop">
<div>
<h1>ADMIN</h1>
<a href="profile.php"><i class="fas fa-user-circle"></i>Profile</a>
<a href="logout.php"><i class="fas fa-sign-out-alt"></i>Logout</a>
</div>
</nav>
<div class="content">
<h2>sms verzenden</h2>
<div class="form-container">
<form action="" method="POST">
username:<input name="user" type="text">
<br>
wachtwoord:<input type="password" name="pass">
<br>
nummers:
<br>
<textarea type="tel" placeholder="(+)31642222222" name="nummer" ></textarea>
<br>
text:
<br>
<textarea type="text" id="berichtinput" name="text" placeholder="SMS bericht tot 160 tekens"></textarea>
<br>
<input type="submit" name="submit" value="verzenden">
</form>
</div>
</div>
<div class="dashboard">
<ul>
<li><a href="home.php">home</a></li>
<br>
<li><a href="adduser.php">accounts DB</a></li>
<br>
<li><a href="smsverzenden.php">sms verzenden</a></li>
<br>
<li><a href="#">chat (onder constructie)</a></li>
</ul>
</div>
<body>
</html>
Gewijzigd op 09/08/2019 19:53:44 door - Ariën -
2) Welke (fout-) melding krijg je?
Mogelijk ook niet onbelangrijk. Is de API bereikbaar via https:// ?
Gewijzigd op 09/08/2019 20:19:21 door - Ariën -
Rob Doemaarwat op 09/08/2019 19:49:37:
1) Het voorbeeld werkt wel? Kun je dat ook hier plaatsen?
2) Welke (fout-) melding krijg je?
2) Welke (fout-) melding krijg je?
als ik deze code gebruik dan kan het verzenden:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$post_data=array(
'sub_account'=>'001_mysub1',
'sub_account_pass'=>'pa55w0Rd',
'action'=>'send_sms',
'sender_id'=>'President',
'recipients'=>'08080000000,2348095029999',
'message'=>"Hello, there will be a meeting today by 12 noon."
); ?>
$post_data=array(
'sub_account'=>'001_mysub1',
'sub_account_pass'=>'pa55w0Rd',
'action'=>'send_sms',
'sender_id'=>'President',
'recipients'=>'08080000000,2348095029999',
'message'=>"Hello, there will be a meeting today by 12 noon."
); ?>
maar ik wil dat de waarde van me input fields word neer gezet, dus als voorbeeld: ik typ in me input field username: "kees_sub" moet dat komen te staan bij 'sub_account'=> etc etc
de foutmelding bij me code die ik eerder liet zien was dat er niet zo een subaccount was dus ik denk dat wat ik na 'sub_account'=> type in me script werd letterlijk zo overgenomen inplaats van dat het pakt wat ik in me input field typ
Toevoeging op 09/08/2019 20:29:32:
- Ariën - op 09/08/2019 19:54:40:
Ik heb even je script voorzien van code-tags en wat hoofdletters weggehaald.
Mogelijk ook niet onbelangrijk. Is de API bereikbaar via https:// ?
Mogelijk ook niet onbelangrijk. Is de API bereikbaar via https:// ?
ja want als ik de werkende versie zet dan is tie te bereiken via https
Gewijzigd op 09/08/2019 20:33:12 door - Ariën -
Gewijzigd op 09/08/2019 20:49:04 door - Ariën -
- Ariën - op 09/08/2019 20:47:52:
Wat doet je script nu? Wat is de fout waar je op vastloopt? Wat geeft de API terug?
het eerste script die ik stuurde die zegt terug dat het geen bestaande subaccount is.
als je boven kijkt naar de reactie van Rob dan zie je het script die wel werkt, hij had ook ongeveer dezelfde vraag dus dat laat gelijk zien wat ik bedoel want misschien lijkt het een beetje verwarrend
In je originele script staan achter de $_POST['xxx'] variabelen steeds nog een ")". Dan gaat je PHP sowieso niet werken (heeft dus niks met de API te maken - gewoon een lokale fout die je in je lokale log terug had kunnen vinden):
Rob Doemaarwat op 09/08/2019 21:08:07:
In je originele script staan achter de $_POST['xxx'] variabelen steeds nog een ")". Dan gaat je PHP sowieso niet werken (heeft dus niks met de API te maken - gewoon een lokale fout die je in je lokale log terug had kunnen vinden):
dankjewel ik ga het gelijk uitproberen of dit werkt geef een klein momentje
Toevoeging op 09/08/2019 21:12:24:
- Ariën - op 09/08/2019 21:09:10:
kan ik die gewoon boven me submit code plakken?
Toevoeging op 09/08/2019 21:16:27:
Rob Doemaarwat op 09/08/2019 21:08:07:
In je originele script staan achter de $_POST['xxx'] variabelen steeds nog een ")". Dan gaat je PHP sowieso niet werken (heeft dus niks met de API te maken - gewoon een lokale fout die je in je lokale log terug had kunnen vinden):
HET WERKT!!!!! echt super dankjewel ik wist wel dat ik daar ergens iets fout deed top man echt top