if & function

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 12 Φεβ 2009 19:18

Καλησπέρα σας.
Έχω την παρακάτω συνάρτηση η οποία ελέγχει την ip του χρήστη και στην συνέχεια ψάχνει από ένα αρχείο txt που περιέχει ονόματα από χώρες και ip και βρίσκει την χώρα που αντιστοιχεί στην συγκεκριμένη ip και την τυπώνει στην οθόνη.

Κώδικας: Επιλογή όλων

<?php
function findcountry&#40;$ip&#41;&#123;
    $countrydb = file&#40;"ip-to-country.txt"&#41;;
    $ip_number = sprintf&#40;"%u",ip2long&#40;$ip&#41;&#41;;

    #binary search attempt
    $low = 0;
    $high = count&#40;$countrydb&#41; -1;

    $count = 0;
    while&#40;$low <= $high&#41; &#123;
        $count++;
        $mid = floor&#40;&#40;$low + $high&#41; / 2&#41;;  // C floors for you
        $num1 = substr&#40;$countrydb&#91;$mid&#93;, 1, 10&#41;;
        $num2 = substr&#40;$countrydb&#91;$mid&#93;, 14, 10&#41;;
        if&#40;$num1 <= $ip_number && $ip_number <= $num2&#41;&#123;
            #start at 27 go 2
            #substr&#40;$$countrydb&#91;$mid&#93;, 27, 2&#41;;
            echo  substr&#40;$countrydb&#91;$mid&#93;, 27, 2&#41;;
            break;
        &#125; else &#123;
            if &#40;$ip_number < $num1&#41; &#123;
                $high = $mid - 1;
            &#125; else &#123;
                $low = $mid + 1;
            &#125;
        &#125;
    &#125;

&#125;
findcountry&#40;$_SERVER&#91;'REMOTE_ADDR'&#93;&#41;;
?>
Προσπαθώ να κάνω έναν απλό έλεγχο αλλά δεν τα καταφέρνω:

Κώδικας: Επιλογή όλων

if &#40;findcountry&#40;$ip&#41;=='GR'&#41;&#123;
echo "1";
&#125;
else &#123;
echo "0";
&#125;
Το GR που έχω βάλει στον έλεγχο είναι αυτό που μου τυπώνει στην οθόνη.
Έχω δοκιμάσει χίλιους δυο τρόπους να κάνω τον έλεγχο αλλά τίποτα :(
Καμιά ιδέα?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 12 Φεβ 2009 19:31

me if (findcountry($_SERVER['REMOTE_ADDR'])=='GR'){ ....mpla mpla

ti kanei patrida?
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 12 Φεβ 2009 19:37

Μου βγάζει 0.
Δηλαδή δεν ισχύει.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 12 Φεβ 2009 19:44

gia grpase mia eggrafh tou arxeiou ip-to-country.txt na doume pos ta emfanizei..
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 12 Φεβ 2009 22:09

"0167772160","0184549375","NL","NETHERLANDS"

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 12 Φεβ 2009 22:36

Κώδικας: Επιλογή όλων

$ip = $_SERVER&#91;'REMOTE_ADDR'&#93;;
    $countrydb = file&#40;"ip-to-country.txt"&#41;;
    $ip_number = sprintf&#40;"%u",ip2long&#40;$ip&#41;&#41;;

    #binary search attempt
    $low = 0;
    $high = count&#40;$countrydb&#41; -1;

    $count = 0;
    while&#40;$low <= $high&#41; &#123;
        $count++;
        $mid = floor&#40;&#40;$low + $high&#41; / 2&#41;;  // C floors for you
        $num1 = substr&#40;$countrydb&#91;$mid&#93;, 1, 10&#41;;
        $num2 = substr&#40;$countrydb&#91;$mid&#93;, 14, 10&#41;;
        if&#40;$num1 <= $ip_number && $ip_number <= $num2&#41;&#123;
            #start at 27 go 2
            #substr&#40;$$countrydb&#91;$mid&#93;, 27, 2&#41;;
           $tip =   substr&#40;$countrydb&#91;$mid&#93;, 27, 2&#41;;
            break;
        &#125; else &#123;
            if &#40;$ip_number < $num1&#41; &#123;
                $high = $mid - 1;
            &#125; else &#123;
                $low = $mid + 1;
            &#125;
        &#125;
    &#125;



if &#40;$tip  =='GR'&#41;&#123;
echo "1";
&#125;
else &#123;
echo "0";
&#125;
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 12 Φεβ 2009 22:52

Πατρίδα υποκλίνομαι. Με άφησες άφωνο :o
Προσπαθούσα κάτι ανάλογο αλλά δεν μου έβγαινε.
Αυτό που ψάχνω τόση ώρα να βρω είναι η μεταβλητή $tip. Δεν έχω καταλάβει, από πού την παίρνει?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 12 Φεβ 2009 22:56

vassilism έγραψε:Πατρίδα υποκλίνομαι. Με άφησες άφωνο :o
Προσπαθούσα κάτι ανάλογο αλλά δεν μου έβγαινε.
Αυτό που ψάχνω τόση ώρα να βρω είναι η μεταβλητή $tip. Δεν έχω καταλάβει, από πού την παίρνει?
h function opos thn eixes aplos typonei to GR, EN klp.. den mporeis na thn pareis san timh.. ego aplos to evgala apo thn function kai eipa $tip = substr($countrydb[$mid], 27, 2);
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 12 Φεβ 2009 23:08

Ρε πατρίδα μερικές φορές νομίζω ότι είμαι πολύ βλάκας :doh:

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 13 Φεβ 2009 00:38

vassilism έγραψε:Ρε πατρίδα μερικές φορές νομίζω ότι είμαι πολύ βλάκας :doh:
eisai neoudi akoma oxi blakas.. siga siga tha stroseis.. :D
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 13 Φεβ 2009 00:53

Πατρίδα εσύ πόσα χρόνια ασχολείσαι με το αντικείμενο?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 13 Φεβ 2009 01:50

vassilism έγραψε:Πατρίδα εσύ πόσα χρόνια ασχολείσαι με το αντικείμενο?
me to psarema? gyro sta 40.... :lol:

me ta mhxanakia genikos konta sta 35...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
vassilism
Δημοσιεύσεις: 1950
Εγγραφή: 17 Μαρ 2007 14:47
Επικοινωνία:

if & function

Δημοσίευση από vassilism » 13 Φεβ 2009 17:54

Είναι πολλά τα χρόνια πατρίδα!!!
Εγώ δεν έχω ούτε τα μισά του μισού από τα δικά σου, αλλά λένε ότι ο νέος είναι ωραίος και ο παλιός είναι αλλιώς :D
Άμα μου πεις ότι κάνεις και ψαρεντούφεκο δεν θα μου φανεί καθόλου περίεργο.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

if & function

Δημοσίευση από fafos » 13 Φεβ 2009 19:37

vassilism έγραψε:Είναι πολλά τα χρόνια πατρίδα!!!
Εγώ δεν έχω ούτε τα μισά του μισού από τα δικά σου, αλλά λένε ότι ο νέος είναι ωραίος και ο παλιός είναι αλλιώς :D
Άμα μου πεις ότι κάνεις και ψαρεντούφεκο δεν θα μου φανεί καθόλου περίεργο.
nai.. me 3 paketa tsigara thn hmera mono gia psarotrofh kano... :lol:
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες