הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בעיה במונה כניסות שהכנתי|PHP (https://hosts.co.il/forums/showthread.php?t=49288)

Nivi 08-07-07 17:54

בעיה במונה כניסות שהכנתי|PHP
 
טוב אז התחלתי ללמוד קצת php, והחלטתי שבתור התחלה אני אבנה איזה מונה כניסות, רציתי לשכלל אותו קצת אז אמרתי שאני יבנה מונה כניסות יחודיות.

משום מה המונה שלי לא עובד, ניסיתי לעשות בדיקה של כניסות יחודיות עם עוגיות וכתובת אייפי אבל אני רואה שהוא לא מבצע טוב את הבדיקה האם כתובת האייפי נמצאת במסד הנתונים, וגם האם העוגיה קיימת במחשב הוא גם לא בודק.

זה הקוד של המערכת:
PHP קוד:

<?php
//התחברות למסד
        
$mysql_link mysql_connect("localhost" "tomerzvi_user" "password") or die(mysql_error());
        
mysql_select_db("tomerzvi_mone",$mysql_link) or die(mysql_error());

//מחיקת כתובות אייפי ישנות ממסד הנתונים
$time=time();
     
mysql_query("DELETE FROM `IpAddresses` WHERE  ($time-IpDate>86400)");

//בדיקה האם כתובת אייפי קיימת במסד
 
function check_ip(){
             
$flagIp=true;
             
$user_ip=$_SERVER["REMOTE_ADDR"];
             
$ip_result=mysql_query("SELECT * FROM `IpAddresses` ");
             while (
$ip_row=mysql_fetch_array($ip_result))
                          {
                            
$ipDb=$ip_row['UserIp'];
                            if(
$ipDb==$user_ip)
                             
$flagIp=false
                               break;
                         }
   return 
$flagIp;
}
//בדיקה האם עוגיה קיימת במחשב של המשתמש
 
function check_coockie(){
   
$flagCoockie=true;
              if(
$_COOCKIE["myCookie"]) $flagCoockie=false ;

     return 
$flagCoockie;

 }
 
//פונקציה המציגה את המונה
function Show_mone(){
   
$MoneF_result=mysql_query("SELECT `Mone` FROM `Monim`");
   
$MoneF_row=mysql_fetch_array($MoneF_result);
    echo 
"כמות הכניסות היא:".$MoneF_row['Mone'];
    echo 
"\n";
}
             if((
check_coockie) && (check_ip)){  // במקרה של כניסה ראשונה
        //הכנסת אייפי והשתלת עוגיה
                  
$user_ip=$_SERVER["REMOTE_ADDR"];
                  
$time=time();
                  
mysql_query("INSERT INTO `IpAddresses` (UserIp , IpDate) VALUES ('$user_ip','$time')");
                  
$name="Something"
                 
setcookie("myCookie",$name,time()+86400);
        
//עדכון והצגת מונה         
                    
mysql_query("UPDATE `Monim` SET Mone = Mone +1");
                      
Show_mone();
                    echo 
"זוהי כניסתך הראשונה לאתר ב24 השעות האחרונות";
             } else {  
//במקרה של כניסה שנייה             
    // הצגת מונה בלבד
                      
Show_mone();
                      echo 
"כבר נכנסת לאתר ב24 השעות האחרונות";
             }    
mysql_close();
?>

אם אתם רוצים אז מה שהדפדפן מציג זה:
http://tomerzv.220mb.com/MoneN.php

Eran-s 08-07-07 17:58

רק בדקתי את הבדיקת IP ועשית שם לא נכון עם התנאי.
תעשה את השאילתה עם WHERE UserIP='{$user_ip}'
ואז אם mysql_num_rows של השאילתה שווה 1 לעשות return false/true בהתאם לבדיקה שלך.
ומזמנים פונקציה עם () בסוף...

Nivi 08-07-07 18:02

ציטוט:

נכתב במקור על ידי Eran-s (פרסם 516942)
רק בדקתי את הבדיקת IP ועשית שם לא נכון עם התנאי.
תעשה את השאילתה עם WHERE UserIP='{$user_ip}'
ואז אם mysql_num_rows של השאילתה שווה 1 לעשות return false/true בהתאם לבדיקה שלך.
ומזמנים פונקציה עם () בסוף...

תודה,
הבנתי את הרעיון שלך אני אנסה אותו עוד כמה דקות, אבל לא הבנתי למה מה שניסיתי לעשות לא עובד?

Meir 08-07-07 18:06

יש לך הרבה שגיאות:
1. בשאלתיה של המחיקה הראשונה אתה מבצע תנאי מחיקה אבל לא מגדיר את השדה שעליו יבוצע התנאי
2. הקריאה שלך לפונקציות לא נכונה, אתה כרגע עושה:

PHP קוד:

if((check_coockie) && (check_ip)) 

הקוד צריך להיות:

PHP קוד:

if(check_coockie() && check_ip()) 

תתקן את הדברים האלה.

Nivi 08-07-07 18:17

יש לי בעיה עם 2 השורות האלה:


PHP קוד:

$ip_result=mysql_query("SELECT UserIp FROM `IpAddresses` WHERE `UserIp`=$user_ip");
             
$rows=mysql_num_rows($ip_result); 

מה לא תקין בהם?
זאת השגיאה:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/tomerzv/domains/tomerzv.220mb.com/public_html/MoneN.php on line 15
שורה 15 זה השורה הראשונה שכתובה כאן...

ASTeam 08-07-07 18:20

ציטוט:

נכתב במקור על ידי Nivi (פרסם 516952)
יש לי בעיה עם 2 השורות האלה:


PHP קוד:

$ip_result=mysql_query("SELECT UserIp FROM `IpAddresses` WHERE `UserIp`=$user_ip");
             
$rows=mysql_num_rows($ip_result); 

מה לא תקין בהם?
זאת השגיאה:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/tomerzv/domains/tomerzv.220mb.com/public_html/MoneN.php on line 15
שורה 15 זה השורה הראשונה שכתובה כאן...

תבדוק שהשורה קיימת במסד
שתיים תעשה ככה -
PHP קוד:

$ip_result=mysql_query("SELECT UserIp FROM IpAddresses WHERE UserIp = '$user_ip'); 


Nivi 08-07-07 18:35

ציטוט:

נכתב במקור על ידי ASTeam (פרסם 516955)
תבדוק שהשורה קיימת במסד
שתיים תעשה ככה -
PHP קוד:

$ip_result=mysql_query("SELECT UserIp FROM IpAddresses WHERE UserIp = '$user_ip'); 


תודה רבה! עובד,
עכשיו בעיה נוספת שיש לי זה שהוא לא בודק האם העוגיה קיימת, ברגע שמחקתי את הטבלה עם כל כתובות האייפי, זה החשיב לי כניסה ולא בדק אם העוגיה קיימת...

Rom 08-07-07 19:43

תשנה את הif בבדיקה של ההעוגיה, לבדיקה אם העוגיה קיימת בעזרת isset

Nivi 08-07-07 19:54

ציטוט:

נכתב במקור על ידי Rom (פרסם 517003)
תשנה את הif בבדיקה של ההעוגיה, לבדיקה אם העוגיה קיימת בעזרת isset

ככה?
PHP קוד:

if(isset($_COOCKIE["myCookie"])) 

עדיין לא עובד, אבל תודה בכל זאת

Rom 08-07-07 20:38

יש לך שגיאת כתיב..
if($_COOCKIE["myCookie"]) $flagCoockie=false ;

cookie
ולא
coockie


כל הזמנים הם GMT +2. הזמן כעת הוא 04:43.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ