לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 06-03-2013, 13:29
  futuresocialnet futuresocialnet אינו מחובר  
 
חבר מתאריך: 06.03.13
הודעות: 7
רושם ג'בריש במקום עברית

שלום,
אני עושה עריכה ותרגום לאתר.
הכל בעברית ותקין עד שזה מגיעה לנקודה שהמשתמש צריך להכניס נתונים כלשהם. אז הנתונים נהפכים ל ×�×�×�×�×� גם במראה החיצוני וגם בבסיס נתונים. נבדק גם בעברית וגם ברוסית. אותה בעייה.
הערכים שמכניסים רק באנגלית נראים בסדר.
MySQL connection collation - utf8_unicode_ci
כמו כן גם הקידוד של הערכים הספציפים בתוך הטבלא שמנסים להכניס - utf8_unicode_ci.
ניסיתי להכניס בקבץ של קונפיגורצייה(config.php) את זה:
קוד:
mysql_query("/*!40101 SET NAMES 'utf8_unicode_ci' */");

ללא הצלחה.
הבעייה גם בהוסטינג וגם בOPEN SERVER
config.php ב - ANSI , אם מעביר לUTF8 זה דופק לי את הקוד.
קוד PHP:
<?php
error_reporting
(E_ALL);
ini_set('display_errors''1');

$host    =  "........."// your mysql server address
$user    =  "........."// your mysql username
$pass    =  "........."// your mysql password
$tablename  =  "........."// your mysql table

session_start();
$data null;
if(!(@
mysql_connect("$host","$user","$pass") && @mysql_select_db("$tablename"))) {
    
?>
    <html>
    MSQL ERROR
    <?
    exit;
}

include_once 'functions.php';
require_once "includes/pluggable.php";
foreach( glob("plugins/*/index.php")  as $plugin) {  
  require_once($plugin);  
}  

hook_action('initialize');

$site = mysql_fetch_object(mysql_query("SELECT * FROM settings"));
?>

מה הבעייה אצלי?
תודה מראש!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #2  
ישן 08-03-2013, 07:58
  futuresocialnet futuresocialnet אינו מחובר  
 
חבר מתאריך: 06.03.13
הודעות: 7
ג'בריש במקום עברית
בתגובה להודעה מספר 1 שנכתבה על ידי futuresocialnet שמתחילה ב "רושם ג'בריש במקום עברית"

נראה לי זה גם לא בעייה בבסיס נתונים. כאשר המשתמש ממלא נתונים בצור קשר (הנתונים לא נכנסים לבסיס נתונים), הערכים נהפכים ל"×¢×�×�×¢×�×�×¢×�×�×¢".
כנראה שהבעייה בPHP ואני לא מבין מה... מהתחלה כל הקבצים היו בANSI. ברגע שאני עושה עריכה בתוך האדיטור של ההוסטינג ומוסיף מילה בעברית, הם נהפכים אוטומטית ל UTF8. אם אני הופך דרך טקסט אדיטור במחשב ל UTF8 זה משום מה דופק לי את הקוד.
הנה לדוגמא הקוד של צור קשר:
קוד PHP:
<?php
include 'header.php';
foreach(
$_POST as $key => $value) {
  
$posts[$key] = filter($value);
}

if(isset(
$posts['name'])) {
    if(
$posts['name'] == ""){
        
$error "אנא רישמו את שמכם האמיתי!";
    }else if(!
isEmail($posts['email'])){
        
$error "אנא רישמו את המייל הנכון!";
    }else if(
$posts['message'] == ""){
        
$error "אנא רישמו את ההודעה!";
    }else{
        
$subject ="Contact";
        
$message="{$posts['message']}";
        
$header="From: {$posts['name']} <{$posts['email']}>";
        
$to $site->site_email;
        
$send_contact=mail($to,$subject,$message,$header);  
        
$success "ההדועה נשלכה!";
    }
}
  
?>
<div class="contentbox" dir="rtl">
    <div class="head">צור קשר</div>
    <div class="contentinside">
        <?php if(isset($error)) { ?>
      <div class="error">שגיאה: <?php echo $error?></div>
        <?php }
        if(isset(
$success)) { ?>
        <div class="success">הצליח! <?php echo $success?></div>
        <?php }
        if(isset(
$warning)) { ?>
        <div class="warning">WARNING: <?php echo $warning?></div>
        <?php ?>
        
        <form class="contentform" method="post">
          שם:<br/>
            <input name="name" type="text" value="<?php if(isset($posts["name"])) { echo $posts["name"]; } ?>"/><br/><br/>
          דוא"ל:<br/>
            <input name="email" type="text" value="<?php if(isset($posts["email"])) { echo $posts["email"]; } else { if(isset($data->email)) { echo $data->email; } } ?>"/><br/><br/>
          הודעה:<br/>
            <textarea rows="10" name="message"><?php if(isset($posts["message"])) { echo $posts["message"]; } ?></textarea><br/><br/>
            <p>
            <input style="width:100%;" type="Submit"/>
        </form>
    </div>
</div>
<?php
include 'footer.php';
?>
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 08-03-2013, 08:09
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 1 שנכתבה על ידי futuresocialnet שמתחילה ב "רושם ג'בריש במקום עברית"

לא רואה פה HTML.

מהמר שהטופס שלך נמצא בדף שאינו מוגדר עם charset של UTF-8

בעורך טקסט צריך לשמור כ utf-8, לא "להפוך ל" - אם העורך שלך לא מוצלח, תעבור לאחד אחר

אם אתה לא רוצה להפוך את כל הדף ל utf-8 אבל רק לקבל קלט כ utf-8, יש מאפיין כזה לתג הטופס: http://www.w3schools.com/tags/att_f...ept_charset.asp

כמו כן, ב PHP לא הגיוני שתהיה בעייה, אם לא עשית שום עבודה על המחרוזות. PHP לא משנה דברים על דעת עצמה (בניגוד לכל מיני שפות אחרות שמרשות לעצמן לעשות דברים כאלה...)

הערת אבטחה: הטופס שלך פגיע להתקפות XSS בגלל שאתה שולח ללקוח בחזרה מה שהתקבל בפרמטרים של הבקשה - גם אם מה שהתקבל הוא קוד HTML/JS... בשביל זה המציאו ב PHP את הפונקציה htmlentities (רק שים לב לתת לה כפרמטר את הקידוד של הדף שבו אתה פולט את הטופס עם קלטי המשתמש - אם זה UTF-8 וה PHP שלך הוא מגירסא 5.4.0 ואילך, אז אין צורך בכך, משום שזו ברירת המחדל)
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 08-03-2013, 11:56
  futuresocialnet futuresocialnet אינו מחובר  
 
חבר מתאריך: 06.03.13
הודעות: 7
בתגובה להודעה מספר 1 שנכתבה על ידי futuresocialnet שמתחילה ב "רושם ג'בריש במקום עברית"

היי! תודה על התגובה!
ניסיתי בNOTEPAD++ לגזור קוד, לשנות ל UTF8 בלי BOM ולהדביק. וככה בכל הדפים.
לא עוזר.
ניסיתי להוסיף את ה:
קוד PHP:
 accept-charset="UTF-8" 


שילבתי בקוד ככה:

קוד PHP:
 <form class="contentform" method="post" accept-charset="UTF-8">
          
שם:<br/>
            <
input name="name" type="text" value="<?php if(isset($posts["name"])) { echo $posts["name"]; } ?>"/><br/><br/>
          
דוא"ל:<br/>
            <input name="
email" type="text" value="<?php if(isset($posts["email"])) { echo $posts["email"]; } else { if(isset($data->email)) { echo $data->email; } } ?>"/><br/><br/>
          הודעה:<br/>
            <textarea rows="10" name="message"><?php if(isset($posts["message"])) { echo $posts["message"]; } ?></textarea><br/><br/>
            <p>
            <input style="width:100%;" type="Submit"/>
        </form>
    </div>
</div>
<?php 


שום דבר לא עזר
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #6  
ישן 08-03-2013, 12:40
  futuresocialnet futuresocialnet אינו מחובר  
 
חבר מתאריך: 06.03.13
הודעות: 7
בתגובה להודעה מספר 1 שנכתבה על ידי futuresocialnet שמתחילה ב "רושם ג'בריש במקום עברית"

זה הקוד של "חדר.PHP"
קוד PHP:
<?php
if(!isset($site))
{
    include 
'config.php'
}
foreach(
$_GET as $key => $value) {
  
$gets[$key] = filter($value);
}

if(isset(
$gets['r']))
{
    
$refid $gets['r'];
    if(isset(
$_SERVER['HTTP_REFERER']))
    {
        
$httpref $_SERVER['HTTP_REFERER'];
    }
    else
    {
        
$httpref "";
    }   
    
$ip VisitorIP();
    
    
$sameid mysql_fetch_object(mysql_query("SELECT ip FROM `users` WHERE `id`='{$refid}'"));
    if(!isset(
$sameid->ip))
    {
        
setcookie("ref"$refidtime()+ (365 24 60 60));
    }
    else if(
$sameid->ip != $ip)
    {
        
setcookie("ref"$refidtime()+ (365 24 60 60));
    }
    
    
    
$visits mysql_query("SELECT id FROM `visits` WHERE `ip`='{$ip}' AND `user`='{$refid}'");
    
$num mysql_num_rows($visits);
    if(
$num == && !preg_match("/\bhost-tracker\b/i"$httpref)) {
        
mysql_query("UPDATE `users` SET `coins`=`coins`+'1', `promote`=`promote`+'1' WHERE `id`='{$refid}'");
        
mysql_query("INSERT INTO `visits` (user, ip, referer, date) VALUES('{$refid}', '{$ip}', '{$httpref}', NOW())");
    }
}

if(isset(
$_POST['loginUsername'])) {
    
$accounts mysql_query("SELECT * FROM `users` WHERE `username`='{$_POST['loginUsername']}' AND `pass`=MD5('{$_POST['loginPassword']}')");
    
$exists mysql_num_rows($accounts);
    
$userdata mysql_fetch_object($accounts);
    if(
$exists == 0){
        
?><script>alert("סיסמה או שם משתמש שגוי!");</script><?php
    
}else if($userdata->banned 0){
        
?><script>alert("קיבלת באן!");</script><?php
    
}else if($userdata->activate 0){
        
?><script>alert("קודם צריך לאשר את המייל...");</script><?php
    
}else if($exists 0) {
        
$_SESSION['IP']  = VisitorIP();
        
mysql_query("UPDATE `users` SET `online`=NOW() WHERE `username`='{$_POST['loginUsername']}'");
        
$user mysql_query("SELECT * FROM `users` WHERE `username`='{$_POST['loginUsername']}'");
        
$_SESSION['data'] = mysql_fetch_object($user);
        
$_SESSION['username'] = $_POST['loginUsername'];
        echo 
"<script>document.location.href='index.php'</script>";
    }
    else{
        
?><script>alert("סיסמה או שם משתמש שגוי!");</script><?php
    
}
}

if(isset(
$_SESSION['username'])){
    
$user mysql_query("SELECT *,UNIX_TIMESTAMP(`online`) AS `online` FROM `users` WHERE `username`='{$_SESSION['username']}'");
    
$data mysql_fetch_object($user);
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title><?php echo $site->site_name?> - Get Facebook Fans, Twitter Followers, Youtube Views, Google +1's, Stumbleupon Followers, Digg Followers, Website Hits, Twitter ReTweets, and MORE!</title>
        <meta name="description" content="<?php echo $site->site_description?>" />
        <link rel="stylesheet" href="style.css" type="text/css" />
        <script type="text/javascript" src="jquery.js"></script>
        


    </head>
    <body>
    <center><a href="index.php"><img src="images/headerlogo.png"></a></center>
        <div class="menu">
            <div class="menu-wrap">
                <ul id="main_menu">
                    <?php if(!isset($data)) { ?>
                    <li><a href="register.php">רישום</a></li>
                    <?php } else { ?>
                    <li>
                        <a href="#">לקבל חילופונים</a>
                        <ul>
                            <?php
                            $menu 
hook_filter('top_menu_earn',"");
                            echo 
$menu;
                            
?>
                        </ul>
                    </li>
                    <?php ?>
                    <li><a href="faq.php">שאלות ותשובות</a></li>
                    <li><a href="contact.php">צור קשר</a></li>
                    <li><a href="stats.php">סטטיסטיקה</a></li>
                    <?php if(isset($data) && $data->admin == 1) { ?>
                    <li><a href="admin-panel/settings.php">Admin Panel</a></li>
                    <?php ?>
                </ul></center>
                <?php if(isset($data)) { ?>
                <div class='loggedin' dir="rtl">מחובר כ: <?php echo $data->username?></div>
                <?php ?>
            </div>
        </div>
        <div class="content">



הנה הלינק לצור קשר
(לא מחובר לחשבון מייל בהוסטינג אז בינתיים לא שולח)
(הוסטינג חינמי, עד שהאתר יבנה)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 08-03-2013, 12:48
  שימיadmin שימי אינו מחובר  
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
 
חבר מתאריך: 25.10.01
הודעות: 42,775
בתגובה להודעה מספר 6 שנכתבה על ידי futuresocialnet שמתחילה ב "זה הקוד של..."

עדיין חסר לנו כאן קוד.

ישנה פונקציה שנקראת filter, שאינה חלק משפת PHP, למיטב ידיעתי. ההגדרה שלה, עד כמה שאני יכול לראות, לא מופיעה לנו כאן. הימור שלי שאיפה שהיא מוגדרת (אולי ב config.php?), מישהו בחר להשתמש בפונקציות כגון htmlspecialchars או htmlentities מבלי לציין קידוד UTF-8 - ושזו הבעייה.

כמו כן, יש לך בקוד שגיאות שעלולות להוביל ל SQL Injection (אין לי מושג מה "filter" עושה, אבל לא סביר שהיא יכולה לנחש אם משתנה מיועד להכנסה לשאילתא (ואז צריך להשתמש ב mysql_real_escape_string) או להדפסה בחזרה למשתמש (ואז צריך להשתמש ב htmlentities עם UTF-8), או... כלום - אסור לבצע המרות בגלל שהקוד צריך לעבוד על הקלט הזה). סתם, שתדע.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה
נמאס לכם לזכור סיסמאות? לחצו כאן!

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:01

הדף נוצר ב 0.10 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר