Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Pagina 1 van 2 1 2 LaatsteLaatste
Weergeven resultaten 1 tot 20 van 24

Onderwerp: Landcodes uit telefoonnummer halen

  • Vraag is opgelost
  1. #1
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km

    Landcodes uit telefoonnummer halen

    Goedendag,

    Ik probeer een sms script op te bouwen die dmv van de ingevoerde telefoonnummer de land en netwerk moet op kunnen zoeken in de database. Ik heb de database al gevuld met de juiste records en heb een filter gemaakt die controlleerd of er wel degelijk een nummer is gekozen en niet een naam.

    Maar nu wil ik de volgende uitvoeren:
    • Gebruiker typt een nummer in en klikt op verzenden/volgende
    • PHP kijkt in de database bij welke land/provider die telefoonnummer hoort door de eerste X nummers in de database te zoeken.
    • PHP haalt de land en de netwerk van de telefoonummer en geeft deze op de (volgende) pagina weer.



    Maar de probleem is dat ik niet weet hoe ik dit moet/kan uitvoeren.

    Ik denk aan de volgende manier, maar dit kan de processor en de database nogal belasten denk ik.

    De gebruiker voer bijvoorbeeld de volgende nummer in 00937954853134856.
    PHP stript de nummer totdat er 10 getallen overblijven, in dit geval 0093795485 en gaat alsvolgt zoeken in de database totdat die een resultaat te pakken heeft:
    0093795485 = Geen resultaat
    009379548 = Geen resultaat
    ...
    009379 = Afghanistan

    Deze code kan wat langer duren als de gebruiker bijvoorbeeld een nummer uit nederland invoert (0031), dus hierbij mijn vraag. Hoe kan ik dit het beste aanpakken?

    Bij voorbaat dank,
    mrprozac

    De tabel met de landcodes ziet er alsvolgt uit
    SQL Code:
    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
    
    INSERT INTO `numberplan` (`dialcode`, `country`) VALUES
    ('0093', 'Afghanistan'),
    ('009370', 'Afghanistan Mobile'),
    ('009375', 'Afghanistan Mobile'),
    ('009377', 'Afghanistan Mobile'),
    ('009378', 'Afghanistan Mobile'),
    ('009379', 'Afghanistan Mobile'),
    ('00355', 'Albania'),
    ('0035566', 'Albania Mobile'),
    ('0035567', 'Albania Mobile'),
    ('0035568', 'Albania Mobile'),
    ('0035569', 'Albania Mobile'),
    ('00213', 'Algeria'),
    ('002135', 'Algeria Mobile'),
    ('002136', 'Algeria Mobile'),
    ('002137', 'Algeria Mobile'),
    ('002139', 'Algeria Mobile'),
    ('001684', 'American Samoa'),
    ('00684', 'American Samoa'),
    ('001684252', 'American Samoa Mobile'),
    ('001684254', 'American Samoa Mobile'),
    ('001684258', 'American Samoa Mobile'),
    ('00376', 'Andorra'),
    ('003763', 'Andorra Mobile'),
    ('003764', 'Andorra Mobile'),
    ('003766', 'Andorra Mobile'),
    ('00244', 'Angola'),
    ('0024491', 'Angola Mobile'),
    ('0024492', 'Angola Mobile'),
    ('0024493', 'Angola Mobile'),
    ('001268', 'Antigua and Barbuda');

  2. #2
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Als je in de database ga zoeken kan je dit gewoon doen op dailcode.
    Het duurt in computer tijd heel lang maar voor ons kan dit snel zijn, ligt eraan hoe snel je bij het gewenste resultaat ben.

    Wat je misschien wel kan doen is in je database tabellen maken gesorteerd op landnamen. Dus een tabel a, b, c, d, etc.
    Hierdoor moet je wel kijken in welke tabel je moet zoeken en dan ook op dailcode.

    Hoop dat dit je helpt

    groeten vreugde
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  3. #3
    Mega Senior SvU's avatar
    Geregistreerd
    26 januari 2007
    Locatie
    Lisse
    Afstand tot server
    ±141 km
    "Wat je misschien wel kan doen is in je database tabellen maken gesorteerd op landnamen. Dus een tabel a, b, c, d, etc."

    Dat is on-onderhoudbaar en helemaal niet nodig, zeker niet bij deze paar honderd records..
    En zo is het.

  4. #4
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Het is helemaal niet on-onderhoudbaar aangezien de zaken al gescheiden zijn en je zelf zo makkelijker kan zoeken. Dat het in script vorm wat langer duurt dan alles in 1 tabel te onderhouden betekent niet dat het on-onderhoudbaar is.

    Het kan een oplossing zijn, maar zoals bij iedere oplossing zijn er voor- en nadelen. Hierover moet je nadenken welke oplossing het beste past in het oorspronkelijke idee. Maar meteen een mogelijke oplossing glashard te discarden zonder enige arugmentatie is ook een beetje te veel van het goede

    Er zijn altijd meerdere oplossingen voor ieder probleem. De kunst is de juiste keuze te maken en open te staan voor mogelijke oplossingen.
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  5. #5
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door vreugde Bekijk Bericht
    Als je in de database ga zoeken kan je dit gewoon doen op dailcode.
    Het duurt in computer tijd heel lang maar voor ons kan dit snel zijn, ligt eraan hoe snel je bij het gewenste resultaat ben.

    Wat je misschien wel kan doen is in je database tabellen maken gesorteerd op landnamen. Dus een tabel a, b, c, d, etc.
    Hierdoor moet je wel kijken in welke tabel je moet zoeken en dan ook op dailcode.

    Hoop dat dit je helpt

    groeten vreugde
    Dit gaat lastig denk ik omdat er meer informatie wordt opgeslagen per landcode, er word per landcode koopprijs en het aantal keer dat die code is gebruik opgeslagen. Althans dat laatste is de bedoeling.

    De database is al gevuld met gegevens, maar ik weet niet hoe ik PHP zover kan krijgen om landcodes uit de telefoonnummer kan halen.

    Ik kan niet de eerste 4 cijfers gebruiken (00xx) omdat er ook veel landen zijn die een landcode hebben die uit meer dan 2 cijfers bestaan, en ik moet ook de netnummer weten omdat de netwerken verschillen per netnummer (eerste 1/2 cijfers na de netnummers om precies te zijn) en de prijzen verschillen per netwerk.


    Quote Origineel gepost door SvU Bekijk Bericht
    "Wat je misschien wel kan doen is in je database tabellen maken gesorteerd op landnamen. Dus een tabel a, b, c, d, etc."

    Dat is on-onderhoudbaar en helemaal niet nodig, zeker niet bij deze paar honderd records..
    Het gaat hier om 4.993 records, die maandelijks bijgewerkt worden op basis van landcode en netnummer.

  6. #6
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Kijk nu komt het echte probleem naar boven.

    Wat je kan doen is ipv alleen een nummer, ook een land te laten kiezen daardoor het zoeken en filteren een stuk gemakkelijker wordt.

    Maar dan heb ik nog een vraag voor jou.
    Hoe weet je dat gebruikers geen + gebruiken ipv een 00 en of dat ze uberhaupt wel een landcode voor het nummer neer plaatsen, want het leuke van applicaties is dat het gebruikt wordt door verschillende personen met verschillende ideeen en kijkwijzes.

    groeten vreugde
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  7. #7
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door vreugde Bekijk Bericht
    Kijk nu komt het echte probleem naar boven.

    Wat je kan doen is ipv alleen een nummer, ook een land te laten kiezen daardoor het zoeken en filteren een stuk gemakkelijker wordt.

    Maar dan heb ik nog een vraag voor jou.
    Hoe weet je dat gebruikers geen + gebruiken ipv een 00 en of dat ze uberhaupt wel een landcode voor het nummer neer plaatsen, want het leuke van applicaties is dat het gebruikt wordt door verschillende personen met verschillende ideeen en kijkwijzes.

    groeten vreugde
    Ik dacht aan regular expressions die kijken naar de eerste 3 tekens, of daar een + of een 00 of een andere internationale prefix gebruiken.

    Daarvoor wil ik dan ook Wikipedia of een andere bron raadplegen met betrekking tot internationale prefixes in andere landen. Als ik het goed heb gelezen gebruikt UK en Japan 010 voor internationale nummers bijvoorbeeld.

    Maar als de persoon een lokaal (binnenlands) nummer wilt kiezen dan is het de bedoeling dat zij gewoon de lokale nummer invoeren en hun land (waar ze zicht bevinden) in hun profiel aangeven.
    Dus als een gebruiker Nederland als zijn land aangeeft, dan worden nummers waar geen internationale prefixes worden gebruikt naar lokale nummers gestuurd.


    Ik kan het natuurlijk verkeerd hebben, in dat geval mijn excuses. Dit zijn ideeën die ik probeer uit te werken door trial-and-error en onderzoek (als ik het gevonden krijg).

  8. #8
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Nou dat zou best kunnen werken, ik denk wel dat je een goed algoritme zal moeten bedenken om te controleren of iemand een buitenlands nummer heeft ingevoerd of een lokaal nummer.

    Maar dit kan je inderdaad doen aan de hand van het land wat hun profiel aangeeft. Maar dan moet je wel ervoor zorgen dat het land geupdate wordt wanneer een persoon zich in het buitenland bevindt en dit zelf niet heeft aangegeven
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  9. #9
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door vreugde Bekijk Bericht
    Nou dat zou best kunnen werken, ik denk wel dat je een goed algoritme zal moeten bedenken om te controleren of iemand een buitenlands nummer heeft ingevoerd of een lokaal nummer.

    Maar dit kan je inderdaad doen aan de hand van het land wat hun profiel aangeeft. Maar dan moet je wel ervoor zorgen dat het land geupdate wordt wanneer een persoon zich in het buitenland bevindt en dit zelf niet heeft aangegeven
    Ik denk dat ik met behulp van GeoIP een informatie bericht kan weergeven als de land in de profiel verschilt met de land van het IP, maar dit zou valse meldingen tevoorschijn halen als de gebruiker gebruikt maakt van bijv. een proxy of een VPN.

    Of zie ik dit verkeerd?

  10. #10
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Ik denk het zelf niet aangezien een proxy vaak gebruikt wordt om de onderliggende computers te controleren en websites te blokkeren en VPN's gebruikt wordt om een private netwerk aan te leggen
    Hierdoor wordt hun IP-adres of plaats niet gewijzigd, want daarvoor wordt er gekeken naar de dichstbijzijnde DHCP server, wat ik geloof
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  11. #11
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door vreugde Bekijk Bericht
    Ik denk het zelf niet aangezien een proxy vaak gebruikt wordt om de onderliggende computers te controleren en websites te blokkeren en VPN's gebruikt wordt om een private netwerk aan te leggen
    Hierdoor wordt hun IP-adres of plaats niet gewijzigd, want daarvoor wordt er gekeken naar de dichstbijzijnde DHCP server, wat ik geloof
    In een zakelijk omgeving kan ik het begrijpen dat proxies voor die doeleinden wordt gebruikt, maar als men een Anonymous proxy gebruiken die de IP-adres van de bezoeker vervangt met de publieke IP adres van de proxy zelfs?

    Op deze manier wordt er bijvoorbeeld gebruik gemaakt van diensten die in normale omstandigheden nier worden aangeboden aan de bezoeker. Bijvoorbeeld Hulu is normaal gesproken niet te bekijken buiten Amerika, maar met een Private Proxy of VPN dat in Amerika is gewestigd of een amerikaans IP heeft, kan de gebruiker wel gebruik maken van Hulu door zijn/haar IP-adres te vervangen met die van de proxy.

  12. #12
    Senior Member vreugde's avatar
    Geregistreerd
    30 augustus 2006
    Locatie
    Breda
    Afstand tot server
    ±134 km
    Dan denk ik dat zulke problemen zich toch kunnen voor blijven doen tenzij PHP daar iets voor heeft maar dat durf ik niet te zeggen
    Destroying objects in C#:
    BigCanon bc = new BigCanon();
    bc.target(object);
    bc.fire();

  13. #13
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door vreugde Bekijk Bericht
    Dan denk ik dat zulke problemen zich toch kunnen voor blijven doen tenzij PHP daar iets voor heeft maar dat durf ik niet te zeggen
    Dat zie ik dan wel, maar nu wil ik graag de probleem dat ik in mijn eerste post beschrijf oplossen, mocht daar geen oplossing voor zijn dan weet ik niet hoe ik verder moet omdat ik de landcode en netnummer uit moet kunnen halen zodat de prijzen aangegeven kunnen worden.

    Door deze 'stap' van het proces moet ik dus de gebruiker laten zien hoeveel het kost om een sms te sturen naar de nummer dat is ingevoerd, of het netwerk/land waar dat nummer van afkomt.

  14. #14
    Hmm, nou, ik denk dat je het wel op de manier kunt doen die je beschreef. Gewoon telkens een cijfertje eraf halen en dan weer zoeken. Als je database niet te groot is, en een beetje goed geordend, dan lijkt mij dat mysql er niet veel problemen mee heeft. PHP heeft er denk ik zoieso geen problemen mee
    Geen keuze maken is ook een keuze

  15. #15
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door 5blabla5 Bekijk Bericht
    Hmm, nou, ik denk dat je het wel op de manier kunt doen die je beschreef. Gewoon telkens een cijfertje eraf halen en dan weer zoeken. Als je database niet te groot is, en een beetje goed geordend, dan lijkt mij dat mysql er niet veel problemen mee heeft. PHP heeft er denk ik zoieso geen problemen mee
    De tabel/schema waar PHP doorheen moet zoeken is niet echt groot, het bevat hooguit 5000 records waar iedere record 5 gegevensvelden heeft (id, land, code, etc.).
    Waar ik dus aan dacht was dat PHP een SQL script (bijv. SELECT land, landcode WHERE landcode IS xx) draait totdat die een resultaat heeft.

    Maar hoe krijg ik php zover om bijv. een loop te draaien waarin de telefoonnummer steeds met een cijfer wordt afgekort en vervolgens de SQL opdracht uitvoert om te zoeken?

  16. #16
    Klein OPZETJE (!)

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    <?php
     
    $telefoonnummer = $_POST['telefoonnummer'];
    $landcode = substr($telefoonnummer, 0, 10);
     
    $i = 0;
    while($i < 10) {
    if($i != 0) {
    $landcode = substr($landcode, 0, -1);
    }
    $sql = mysql_query("SELECT * FROM tabelnaam WHERE landcode='".$landcode."'");
     
    if(mysql_num_rows($sql) != 0) {
    die();
    }
     
    $i++;
    }
     
    ?>
    Geen keuze maken is ook een keuze

  17. #17
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door 5blabla5 Bekijk Bericht
    Klein OPZETJE (!)

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    <?php
     
    $telefoonnummer = $_POST['telefoonnummer'];
    $landcode = substr($telefoonnummer, 0, 10);
     
    $i = 0;
    while($i < 10) {
    if($i != 0) {
    $landcode = substr($landcode, 0, -1);
    }
    $sql = mysql_query("SELECT * FROM tabelnaam WHERE landcode='".$landcode."'");
     
    if(mysql_num_rows($sql) != 0) {
    die();
    }
     
    $i++;
    }
     
    ?>
    Hartelijk dank,

    Dit is precies wat ik zocht en het werkt uitstekend.

    Dank U

  18. #18
    Quote Origineel gepost door mrprozac Bekijk Bericht
    Hartelijk dank,

    Dit is precies wat ik zocht en het werkt uitstekend.

    Dank U
    Let op hoor, de variabelen zijn nog niet beveiligd tegen injections
    Geen keuze maken is ook een keuze

  19. #19
    Senior Member
    Geregistreerd
    16 juli 2008
    Locatie
    Eindhoven
    Afstand tot server
    ±91 km
    Quote Origineel gepost door 5blabla5 Bekijk Bericht
    Let op hoor, de variabelen zijn nog niet beveiligd tegen injections
    Ik heb een aantal kleine wijzigingen in de code gebracht en er een function() van gemaakt

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    function numprice($telefoonnummer)
    {
    $landcode = substr($telefoonnummer, 2, 10);
     
    $i = 0;
    while($i < 10) {
    if($i != 0) {
    $landcode = substr($landcode, 0, -1);
    }
    $sql = mysql_query("SELECT * FROM numberplan WHERE dialcode=00$landcode");
     
    if(mysql_num_rows($sql) != 0) {
    while ($row = mysql_fetch_assoc($sql)) {
        $dialc=substr($row['dialcode'], 2);
        $sellprice=substr($row['sellprice'], 0, 2);
        $pricearr=array($dialc, $row['country'], $sellprice);
        return($pricearr);
    }
    die();
    }
    $i++;
    }
    }

    Als ik het goed begrijp moet ik gebruik maken van mysql_real_escape_string(); om SQL Injections tegen te gaan?

    Dus bijvoorbeeld:
    PHP Code:
    1
    
    $password =$_POST['password'];
    wordt
    PHP Code:
    1
    
    $password = mysql_real_escape_string(htmlentities(trim($_POST['password'])));

  20. #20
    Quote Origineel gepost door mrprozac Bekijk Bericht
    Ik heb een aantal kleine wijzigingen in de code gebracht en er een function() van gemaakt

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    function numprice($telefoonnummer)
    {
    $landcode = substr($telefoonnummer, 2, 10);
     
    $i = 0;
    while($i < 10) {
    if($i != 0) {
    $landcode = substr($landcode, 0, -1);
    }
    $sql = mysql_query("SELECT * FROM numberplan WHERE dialcode=00$landcode");
     
    if(mysql_num_rows($sql) != 0) {
    while ($row = mysql_fetch_assoc($sql)) {
        $dialc=substr($row['dialcode'], 2);
        $sellprice=substr($row['sellprice'], 0, 2);
        $pricearr=array($dialc, $row['country'], $sellprice);
        return($pricearr);
    }
    die();
    }
    $i++;
    }
    }

    Als ik het goed begrijp moet ik gebruik maken van mysql_real_escape_string(); om SQL Injections tegen te gaan?

    Dus bijvoorbeeld:
    PHP Code:
    1
    
    $password =$_POST['password'];
    wordt
    PHP Code:
    1
    
    $password = mysql_real_escape_string(htmlentities(trim($_POST['password'])));
    Exact
    Geen keuze maken is ook een keuze

Pagina 1 van 2 1 2 LaatsteLaatste

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren
Linkpartners
Aanbiedingen