CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
10.07.2014, 10:28:00
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: String zu Array Versand Problem
@doschni - die anderen Fehler hast Du schon behoben?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
10.07.2014, 17:05:46
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: String zu Array Versand Problem
Zitat:
Zitat von doschni
Oke, hier das Original-Script, an das ich über ein Formular mehrere Empfänger übergeben möchte:
PHP-Code:
$recipientAddressList = array("4367612345678");
|
Das sind nicht "mehrere Empfänger" sondern nur "ein Empfänger"
Zitat:
PHP-Code:
$utf8_message_text = "Testnachricht";
|
UTF8 per SMS wegschicken zu wollen, halte ich für sehr für sehr gewagt. Der Zeichenvorrat UTF-8 ist wesentlich größer als das, was ein Handy anzeigen kann, aber das Script behauptet ja, es könne es.
Zitat:
In Zeile 615 geht's um die Fehlermeldung must be numeric.
|
Sakra! Kennt Dein Scheißbrowser kein Copy&Paste? Ich kann und will das Script nicht installieren, um mir den genauen Wortlaut der Fehlermeldung anzugucken.
Zitat:
Auch die komplette phpinfo hab ich gleich dortrein kopiert.
|
Nein, haste nicht.
Kurz: [06-Jan-2011] PHP 5.3.5 and 5.2.17 Released!
Du wohnst also zur Untermiete auf einem Server, auf dem der Provider mehr als drei Jahre kein Update gemacht hat? Mutig, darauf zu hoffen, daß kein Bösewicht versucht, mit einem der in PHP 5.2.17 enthaltenen Bugs, die erst paar Monate/Jahre später gefixt wurden, einzubrechen.
Wenigstens was.
Hier mal etwas zum Nachdenken:
1. http://mod.php.developer.vc/test/60/ (Quelltext wird angezeigt)
2. ggf. auch mal das probieren: http://de1.php.net/debug_backtrace
3. daran denken, daß alle vom User geschickten Formularvariablen in $_POST, $_GET, $_REQUEST, $_COOKIE den Datentyp string haben.
In meinem Beispielscript ist eine Passage enthalten, in der mit foreach und intval aus den (Formular)Strings Integerzahlen werden.
|
10.07.2014, 20:42:19
|
Anfänger
|
|
Registriert seit: Jul 2014
Alter: 41
Beiträge: 14
|
|
AW: String zu Array Versand Problem
Danke euch für die Inputs. Werde am Wochende die Sachen ausprobieren/vertiefen. Als Anfänger, der ich bin, halt Schritt für Schritt.
@vt1816 Ja, den Fehler $reveiver <> $receiver habe ich wohl bereits unbewusst behoben gehabt. Ich habe auch mit einem etwas anderen Ansatz gestartet, indem ich in einem String nur Namen per $GET übergebe und dann auf dem Versandscript die Namen mit Zahlen ersetze.
PHP-Code:
$phrase = $_GET['progs'];
$orig = array("Jack,", "Jones,");
$new = array("41745554433","41746667788");
$newphrase = str_replace($orig, $new, $phrase);
Hat aber noch nicht gefruchtet.
Gruss doschni
|
11.07.2014, 02:55:43
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: String zu Array Versand Problem
Zitat:
Zitat von doschni
$new = array("41745554433","41746667788");
Hat aber noch nicht gefruchtet.
|
Kannste nicht endlich mal die dämlichen Gänsefüße killen, weil die aus Deiner wunderschönen Telefonnummer nen weniger schönen String machen, über den sich das SMS Script laufend aufregt?
Noch mal zur Lektüre:
Zitat:
Hier mal etwas zum Nachdenken:
1. http://mod.php.developer.vc/test/60/ (Quelltext wird angezeigt)
2. ggf. auch mal das probieren: http://de1.php.net/debug_backtrace
3. daran denken, daß alle vom User geschickten Formularvariablen in $_POST, $_GET, $_REQUEST, $_COOKIE den Datentyp string haben.
In meinem Beispielscript ist eine Passage enthalten, in der mit foreach und intval aus den (Formular)Strings Integerzahlen werden.
|
|
12.07.2014, 21:56:41
|
Anfänger
|
|
Registriert seit: Jul 2014
Alter: 41
Beiträge: 14
|
|
Gelöst AW: String zu Array Versand Problem
Dank Deinem Script konnte ich's endlich lösen! Vielen Dank. Die Funktion
PHP-Code:
var_dump($recipientAddressList);
hat mich draufgebracht. Dadurch wurde sichtbar, dass ein multiples Array draus wurde. Dann fiel bei mir der Groschen.
Meine Lösung sieht nun folgendermassen aus:
Ins Formularfeld trage ich nur die Mobile-Nummern ein: 41745554433,41746667788
Code:
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<title>Mehrere Empfänger</title>
</head>
<?php
if (false === isset($_POST["numbers"])) {
?>
<body>
<form name="mobile">
<label for="tags">Empfänger: </label>
<input type="text" name="numbers" id="tags" size="50">
<input name="submit" type="submit" value="senden" formaction="" formmethod="post"/>
</form>
</body>
</html>
<?php
}
else {
//--------------------------------------------------------------------------------------
// websms.com XML Gateway usage sample code
// 1.) create client,
// 2.) create message,
// 3.) send message with client.
//--------------------------------------------------------------------------------------
include "WebSmsCom_Toolkit.inc"; // will need JSON.phps (Service_JSON) for PHP<5.2.0
# Modify these values to your needs
$username = 'your_username';
$pass = 'your_password';
$gateway_url = 'https://api.websms.com/';
$numbers = $_POST['numbers'];
var_dump($numbers);
$ints = array_map('intval', explode(',', $numbers ));
var_dump($ints);
$recipientAddressList = $ints;
var_dump($recipientAddressList);
$utf8_message_text = "Erfolgreich versandt!";
$maxSmsPerMessage = 1;
$test = false; // true: do not send sms for real, just test interface
try {
// 1.) -- create sms client (once) ------
$smsClient = new WebSmsCom_Client($username, $pass, $gateway_url);
//$smsClient->setVerbose(true);
// 2.) -- create text message ----------------
$message = new WebSmsCom_TextMessage($recipientAddressList, $utf8_message_text);
//$message = binary_sms_sample($recipientAddressList);
// 3.) -- send message ------------------
$Response = $smsClient->send($message, $maxSmsPerMessage, $test);
// show success
print_r(array(
"Status : ".$Response->getStatusCode(),
"StatusMessage : ".$Response->getStatusMessage(),
"TransferId : ".$Response->getTransferId(),
"ClientMessageId : ".(($Response->getClientMessageId()) ?
$Response->getClientMessageId() : '<NOT SET>'),
));
// catch everything that's not a successfully sent message
} catch (WebSmsCom_ParameterValidationException $e) {
exit("ParameterValidationException caught: ".$e->getMessage()."\n");
} catch (WebSmsCom_AuthorizationFailedException $e) {
exit("AuthorizationFailedException caught: ".$e->getMessage()."\n");
} catch (WebSmsCom_ApiException $e) {
echo $e; // possibility to handle API status codes $e->getCode()
exit("ApiException Exception\n");
} catch (WebSmsCom_HttpConnectionException $e) {
exit("HttpConnectionException caught: ".$e->getMessage()."HTTP Status: ".$e->getCode()."\n");
} catch (WebSmsCom_UnknownResponseException $e) {
exit("UnknownResponseException caught: ".$e->getMessage()."\n");
} catch (Exception $e) {
exit("Exception caught: ".$e->getMessage()."\n");
}
//-- end of main
//-----------------------------------------------
// binary_message_content
//-----------------------------------------------
function binary_sms_sample($recipientAddressList) {
//| Working messageContent sample of PDU sms containing content "Zusammengefügt."
//| sent as 2 SMS segments: ("Zusammen","gefügt.").
//| First 6 Bytes per segment are sample UDH. See http://en.wikipedia.org/wiki/Concatenated_SMS
//$messageContentSegments = array(
// "BQAD/AIBWnVzYW1tZW4=", // 0x05,0x00,0x03,0xfc,0x02,0x01, 0x5a,0x75,0x73,0x61,0x6d,0x6d,0x65,0x6e
// "BQAD/AICZ2Vmw7xndC4=" // 0x05,0x00,0x03,0xfc,0x02,0x02, 0x67,0x65,0x66,0xc3,0xbc,0x67,0x74,0x2e
//);
// bytewise rebuilt sample. (identical to above):
$messageContentSegments = array(
base64_encode( pack("c*", 0x05,0x00,0x03,0xfc,0x02,0x01, 0x5a,0x75,0x73,0x61,0x6d,0x6d,0x65,0x6e) ),
base64_encode( pack("c*", 0x05,0x00,0x03,0xfc,0x02,0x02, 0x67,0x65,0x66,0xc3,0xbc,0x67,0x74,0x2e) )
);
$userDataHeaderPresent = true; # Binary Data includes UserDataHeader for e.G.: PDU sms (Concatenation)
$message = new WebSmsCom_BinaryMessage($recipientAddressList, $messageContentSegments, $userDataHeaderPresent);
return $message;
}
} //--end of else
?>
|
12.07.2014, 23:25:54
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: Gelöst AW: String zu Array Versand Problem
Zitat:
Zitat von doschni
... konnte ich's endlich lösen!
|
Die gute Nachricht: Gratulation
Die Schlechte:
in dem Textefeld können auch whitespaces (Leerzeichen, Zeilenumbruch, Tabulator uä.) und andere nicht-numerische Zeichen sein: + - ( )
Von der Teflonnummer +49-361-123456 wäre das Ergenis nach intval() 49. Du möchtest aber (wahrscheinlich) 49361123456
PHP-Code:
# ...
function telefonnummer($n){
$n = trim($n); # entfernt Whitespaces am Anfang und am Ende
$n = str_replace(array('+','-',' ', '(', ')'), '', $n); # schmückendes Beiwerk killen
$n = intval($n); # wir äh... Du willst ja ne Zahl und keine Ziffern-Zeichenkette
return $n;
}
$ints = array_map('telefonnummer', explode(',', $numbers ));
# ...
Natürlich kannste die einzelnen Schritte in der Funktion auch zusammenfassen. Due obige Darstellung dient nur zu Erklärung der einzelnen Schritte.
|
13.07.2014, 01:17:03
|
Anfänger
|
|
Registriert seit: Jul 2014
Alter: 41
Beiträge: 14
|
|
AW: String zu Array Versand Problem
Zitat:
Die schlechte Nachricht: in dem Textefeld können auch whitespaces (Leerzeichen, Zeilenumbruch, Tabulator uä.) und andere nicht-numerische Zeichen sein: + - ( )
|
Wie's sich jetzt grad verhält, finde ich es sogar sehr gut so. Das ganze befindet sich ja in einem Login-Container. Die paar Nummern lasse ich über ein Javascript einfügen, wobei ich noch die Namen an die Nummer anfüge zur besseren Übersicht. Durch den Namen lässt sich auch die Suche sehr schnell eingrenzen und der gewünschte Kollege/die gewünschten Kollegen auswählen.
Beispielbild jQuery UI Autocomplete Multiple values
Code:
...
<head>
<meta charset="utf-8">
<title>Mehrere Empfänger</title>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<script>
$(function() {
var availableTags = [
"41745554433 Jack",
"41746667788 Jones",
"41745554433,41746667788 Alle Kollegen"
];
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}
$( "#tags" )
// don't navigate away from the field on tab when selecting an item
.bind( "keydown", function( event ) {
if ( event.keyCode === $.ui.keyCode.TAB &&
$( this ).autocomplete( "instance" ).menu.active ) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function( request, response ) {
// delegate back to autocomplete, but extract the last term
response( $.ui.autocomplete.filter(
availableTags, extractLast( request.term ) ) );
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( "," );
return false;
}
});
});
</script>
</head>
...
...
$numbers = $_POST['numbers'];
$numbers = substr($numbers, 0, -1); // nötig, um das letzte Komma aus dem Formularfeld zu löschen
var_dump($numbers);
...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:46:11 Uhr.
|