banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành Windows fix giùm tôi lỗi trong php  XML
  [Programming]   fix giùm tôi lỗi trong php 02/07/2006 06:35:07 (+0700) | #1 | 3027
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
1, Lỗi sent session cookie

khai báo session trong file indix.php thế này

Code:
session_start();
if (isset($_COOKIE['mediaonline'])) {
 $_SESSION["user"] = $_COOKIE['mediaonline'];
}

server báo lỗi thế này:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /public_html/music/index.php:1)


2,lỗi bởi các ký tự meta...

ví dụ ký tự này ' các biến nhập vào chứa ký tự ' khi sử dụng biến này trong các query sẽ báo lỗi
ví dụ: $casi nhập vào giá trị sau " Li'knigt "
khi chạy query này sẽ bị lỗi
Code:
S ELECT * FROM $data->table_media WHERE mediasinger LIKE '".$n["casi"]."'


Làm ơn fix giùm tôi
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 02/07/2006 10:38:50 (+0700) | #2 | 3089
h_manh2612
Member

[Minus]    0    [Plus]
Joined: 13/10/2004 19:26:39
Messages: 6
Offline
[Profile] [PM]
Mình chỉ biết cách fix lỗi thứ nhất thôi, lỗi thứ 2 mình không rõ lắm vi sql biết hơi ít, fix lỡi 1 lại như sau : Bạn truy cập vào website http://www.emeditor.com/ dơn load phần mền emeditor về cài đặt nó rồi dùng nó để mở file index.php đó, vào file chọn save as : ở phần Code Page bạn chọn UTF-8 và bỏ đánh dấu ở ô Add a Unicode ... là được. :?
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 02/07/2006 11:59:56 (+0700) | #3 | 3108
[Avatar]
vtv_4
Elite Member

[Minus]    0    [Plus]
Joined: 12/04/2002 19:31:12
Messages: 20
Offline
[Profile] [PM]



Chả hiểu sao forum lại detect ra đoạn text tôi gửi là có XSS và/hoặc SQL Injection, oan cho tôi quá smilie

http://www.savefile.com/files/6157938 <<< File text của cái post bằng image ở trên.
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 02/07/2006 12:42:02 (+0700) | #4 | 3110
[Avatar]
caothuvolam
HVA Friend

Joined: 29/12/2001 13:54:03
Messages: 82
Offline
[Profile] [PM]
Trong bài viết bạn tránh viết SELЕCT, FROM...
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 03/07/2006 04:03:45 (+0700) | #5 | 3241
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
Thank all
vtv-4 thông minh y như tui smilie bữa trước tui cũng ko dùng được tag code cũng có ý định chụp bài viết post bằng ảnh...tui phải viết cách các câu lệnh mới post được, bác admin xem lại giùm, cho vào tag code rồi mà vẫn báo lỗi...

lỗi thứ nhất tui nghĩ là do server, ko phải tại unicode vì tôi code php bằng pmeditor, save as UTF-8, có lẽ như vtv-4 đã nói server tự động "quotes" gì đó tui ko hiểu về server, vấn đề là làm sao fix được khi mình dùng server của người ta (host free pó tay) có lần tui mail cho chủ host, người ta fix được ngay trong vài giây, hầu hết các server hiện nay ko cho sent session theo kiểu này. Tui lại ko biết code kiểu khác, rất mong được các bác giúp đỡ

Lỗi thứ 2 tui cũng đã làm như vtv-4 đã nói dùng hàm addslashes nhưng tui lại gán trước khi chạy query nên ko được, tui sẽ làm như vtv-4 xem thế nào

Lỗi thứ nhất làm ảnh hưởng toàn bộ code trang nhạc, ko fix được = ko dùng được code này, rất mong được các bác giúp đỡ, nếu ko fix được các bác có thể code mới phần session cho em với, em ko thể dùng được trên bất kỳ server nào, cài trên local bằng appserv thì ok cài bằng easyphp thì bị lỗi như trên host
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 03/07/2006 04:37:41 (+0700) | #6 | 3251
zeroj
Member

[Minus]    0    [Plus]
Joined: 02/07/2006 14:08:50
Messages: 1
Offline
[Profile] [PM]
lổi này là do đã có mã HTML được gửi trước khi bạn gọi hàm sesstion_start();
bạn hãy sửa nó bằng cách đặt hàm này vào đâu trang index.php [ có thể đặt đâu tuỳ bạn, nhưng không được sau các thẻ HTML hoặc thậm chí là khoản trắng ]
---------------
tốt nhất nên khởi động session ngay đầu trang index.php, theo mình thấy session là cách hay để truyền biến từ trang này sang trang khác, vài vậy nên khởi động nó ngay trên trang đầu của ứng dụng web, bạn có thể dùng cookie tuy nhiên nó có thể bị disable bởi user
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 03/07/2006 04:44:07 (+0700) | #7 | 3256
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
ok tôi sẽ thử đưa lên trên cùng...có lẽ cũng ko phải lý do này, vì bạn thấy đó lỗi server báo là ở dòng 1 mà, tui cũng để ở trên cùng rồi mà.

có lần tôi mail cho chủ server họ fix như thế nào ko biết, code thì vẫn y nguyên nhưng nếu up đè file khác trên host là tiu liền, edit thì ok
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 03/07/2006 12:07:37 (+0700) | #8 | 3384
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
oài làm hết cách mọi người nói rồi mà ko được, vấn đề về session là do server, vì tôi cài localhost bằng appserv chạy tốt, up lên host thì ko được

lỗi do ký tự meta dùng hàm addslashes cũng ko được, hàm này cũng y chang như htmlspecailchars chỉ có tác dụng lọc dữ liệu nhập vào, dữ liệu đã nhập vào khi chạy các query như đã nói thì ko lọc được.

làm ơn cho thêm ý kiến!
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 05/07/2006 11:33:09 (+0700) | #9 | 4059
[Avatar]
vtv_4
Elite Member

[Minus]    0    [Plus]
Joined: 12/04/2002 19:31:12
Messages: 20
Offline
[Profile] [PM]
Bạn đưa file lên đây đi.
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 05/07/2006 12:05:04 (+0700) | #10 | 4062
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]

vtv_4 wrote:
Bạn đưa file lên đây đi. 

đây bạn

Code:
<?php
session_start();
if (isset($_COOKIE['MediaOnlineCookie'])) {
	$_SESSION["user"] = $_COOKIE['MediaOnlineCookie'];
}
?>
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 07/07/2006 06:04:27 (+0700) | #11 | 4694
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
1. zeroj nói đúng. Bạn đã gởi cái gì đó đến client trước session_start(). Tôi đoán là bạn không gọi trực tiếp index.php mà wwwect từ 1 script khác. Kiểm tra script này xem sao.

2. Trong PHP có hàm mysql_real_escape_string($str). Dùng hàm này. Lưu ý là $str mang đúng giá trị của biến. Nếu $str đã quote (do magic quote = on) thì phải trả $str về đúng giá trị bằng stripslashes().
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 08/07/2006 02:26:47 (+0700) | #12 | 4906
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]

thang2rs wrote:
1. zeroj nói đúng. Bạn đã gởi cái gì đó đến client trước session_start(). Tôi đoán là bạn không gọi trực tiếp index.php mà wwwect từ 1 script khác. Kiểm tra script này xem sao.

2. Trong PHP có hàm mysql_real_escape_string($str). Dùng hàm này. Lưu ý là $str mang đúng giá trị của biến. Nếu $str đã quote (do magic quote = on) thì phải trả $str về đúng giá trị bằng stripslashes(). 

đảm bảo 100% ko phải tại có khoảng trắng hoặc thừa ký tự nào đó trước function session_start

Tôi gọi trực tiếp file index.php, ko qua script nào cả
Bác nói cụ thể hơn về mysql_real_escape_string($str) đi, dùng nó như addslashes... à?

Tui khai báo
Code:
<?
session_start();

trên cùng trog file index.php

khi chưa login báo như vầy
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /www/nghenhac/index.php:1) in /www/nghenhac/index.php on line 2 

khi login vào nó báo như vầy
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /www/nghenhac/index.php:1) in /www/nghenhac/index.php on line 2 


2 lần Warning: khác nhau đó các bác nhé
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 10/07/2006 23:06:01 (+0700) | #13 | 5598
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
1. session_start(): Rất có thể lỗi query gây nên lỗi này. Khi query bị lỗi, PHP sẽ gởi thông báo lỗi đến client. Không may thông báo này lại đến trước session_start() và 'Warning: session_start(): Cannot send session cookie...'. Thử sửa lỗi query, có thể sẽ không còn lỗi này nữa.

2. mysql_real_escape_string(): Như tên gọi của nó, đây là hàm dùng để escape một chuỗi trước khi đưa vào query. Mặc dù là hàm của PHP nhưng hàm này gọi các thư viện hàm của MySQL. Do đó hàm này bảo đảm chuỗi đưa vào vừa chính xác vừa an toàn (tránh các SQL injection hay các kí tự vô tình làm hỏng các query). Dùng nó như sau:

Nếu $str lấy từ user input, kiểm tra magic quote, nếu =on trả $str về đúng giá trị của nó:

if (get_magic_quotes_gpc()) {
$str=stripslashes($_POST['name']);
} else
$str=$_POST['name'];

Escape $str:

$str=mysql_real_escape_string($str);

Sau đó đặt $str vào 2 dấu ' như bạn đã dùng.
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 12/07/2006 05:58:32 (+0700) | #14 | 5977
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
cám ơn thang2rs nhìu!

nhưng các query của tôi chạy tốt cả, biết kiểm tra thế nào được nhỉ?
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 12/07/2006 22:15:15 (+0700) | #15 | 6118
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
Lỗi query mà tôi nói đến là lỗi thứ 2 mà bạn nêu ra đấy ( 2,lỗi bởi các ký tự meta...)!
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 13/07/2006 00:40:12 (+0700) | #16 | 6187
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
à, nhưng khi vào trang chủ đã bị vậy rồi, trang chủ của em chỉ view ra topdown, toplist, newsong. khi play 1 bài nào mới liên quan đến cái query lỗi của em mà bác
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 13/07/2006 05:15:35 (+0700) | #17 | 6249
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
Tôi cũng không thật rõ vấn đề của bạn.

Trước hết bạn đã dùng và dùng được mysql_real_escape_string() chưa? Nếu chưa tôi nghĩ cần giải quyết cái này trước đã. Việc dùng hàm này là bắt buộc trong mọi trường hợp cần đưa 1 chuỗi vào query (ngay cả khi chuổi rỗng hay chỉ chứa các kí tự thông thường). Tôi nghĩ bạn phải chắc chắn cái này trước khi tính đến vấn đề session.
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 17/07/2006 06:29:46 (+0700) | #18 | 7301
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]

thang2rs wrote:
mysql_real_escape_string(): Như tên gọi của nó, đây là hàm dùng để escape một chuỗi trước khi đưa vào query. Mặc dù là hàm của PHP nhưng hàm này gọi các thư viện hàm của MySQL. Do đó hàm này bảo đảm chuỗi đưa vào vừa chính xác vừa an toàn (tránh các SQL injection hay các kí tự vô tình làm hỏng các query). Dùng nó như sau:

Nếu $str lấy từ user input, kiểm tra magic quote, nếu =on trả $str về đúng giá trị của nó:

if (get_magic_quotes_gpc()) {
$str=stripslashes($_POST['name']);
} else
$str=$_POST['name'];

Escape $str:

$str=mysql_real_escape_string($str);

Sau đó đặt $str vào 2 dấu ' như bạn đã dùng.
 

em đã làm thử nhưng vẫn ko được bác ui
em cho đoạn này vào phần input của user (file post.php)
Code:
if (get_magic_quotes_gpc()) {
  $mediasinger=stripslashes($_POST['mediasinger']);
} else
  $mediasinger=$_POST['mediasinger'];


$mediasinger=mysql_real_escape_string($mediasinger);

kết quả thấy y chang như em đang dùng hàm addslashes, nếu giá trị input có ký tự meta nó sẽ tự sinh ra dấu \ trước nó, khi chạy query vẫn có lỗi...
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 17/07/2006 23:39:47 (+0700) | #19 | 7450
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
Việc thêm \ trước các kí tự meta là đúng với ý đồ của mysql_real_escape_string(). Nhờ nó mà ta có thể đưa string vào query một cách an toàn. Tuy nhiên không giống như addslashes() chỉ thêm \ một cách máy móc, mysql_real_escape_string() dùng chính thư viện hàm của MySQL để escape một string theo cách của chính MySQL. Và rõ ràng không ai "hiểu" MySQL bằng chính MySQL. Ta để cho MySQL tự "sửa soạn" thực đơn cho chính nó smilie

Trở lại vấn đề, ta vẫn dùng đoạn code mà bạn đang dùng, giả dụ user nhập giá trị it's me cho $mediasinger thì:

Trường hợp 1: get_magic_quotes_gpc()==1 , $mediasinger mang giá trị it\'s me (lưu ý có \)

Trường hợp 2: get_magic_quotes_gpc()==0 , $mediasinger mang giá trị it's me (lưu ý không có \)

Trường hợp 2 ta để nguyên $mediasinger. Trường hợp 1 ta bỏ \ bằng stripslashes(). Lúc này $mediasinger mang giá trị giống như trong trường hợp 2 (nghĩa là it's me, đây là giá trị thực của $mediasinger)

Sau đó ta mysql_real_escape_string() biến $mediasinger trước khi đưa nó vào query. Lúc này $mediasinger mang giá trị đã được escape là it\'s me (đây là cách mà MySQL escape kí tự ' và nhiều kí tự khác nữa).

Giá trị này được để trong 2 dấu nháy đơn và dùng "an toàn" trong câu query.

Tôi đã dùng cách này trong nhiều năm và chưa bao giờ gặp bất kì 1 lỗi nào. Nếu bạn chạy mà vẫn gặp lỗi thì đành nhờ các cao thủ khác vậy smilie
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 19/07/2006 00:02:17 (+0700) | #20 | 7743
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
thanks thang2rs
nhưng ko hiểu sao em làm vậy mà ko thấy có kết quả gì, bác xem code trên của em đúng như ý bác nói chưa?

em chỉ bị lỗi khi chạy query có dùng LIKE
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 19/07/2006 02:42:44 (+0700) | #21 | 7773
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
Bạn đã dùng đúng.

Cho xem chính xác câu query của bạn. Câu query ở post đầu tiên có vẻ không đầy đủ.

Thử:

$table=$data->table_media;

if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_POST['mediasinger']);
} else
$mediasinger=$_POST['mediasinger'];

$mediasinger=mysql_real_escape_string($mediasinger);

$query="S ELECT * FROM $table WHERE mediasinger LIKE '%$mediasinger%'";

Note: Bỏ khoảng trắng trong "S ELECT";

[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 19/07/2006 04:15:09 (+0700) | #22 | 7797
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
bác ui chỗ này là sao vậy
LIKE '%$mediasinger%'";
sao lại dùng % ok em sẽ thử xem thế nào

Chỉ cần đặt đoạn

if (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_POST['mediasinger']);
} else
$mediasinger=$_POST['mediasinger'];

$mediasinger=mysql_real_escape_string($mediasinger);

để lọc khi input data thôi phải ko bác, có cần đặt ở phần chạy query ko?
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 19/07/2006 22:22:43 (+0700) | #23 | 7976
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
% là kí tự đại diện (wildcard) cho bất kì kí tự nào (giống * trong DOS vậy).

Dùng '%$mediasinger%' để chỉ bất kì chuỗi nào có chứa $mediasinger.

Đặt:

f (get_magic_quotes_gpc()) {
$mediasinger=stripslashes($_POST['mediasinger']);
} else
$mediasinger=$_POST['mediasinger'];

$mediasinger=mysql_real_escape_string($mediasinger);

để 'lọc' input data. $mediasinger lúc này đã được escape bởi MySQL.

Sau đó từ $table=$data->table_media và $mediasinger xây dựng query.

$query="S ELECT * FROM $table WHERE mediasinger LIKE '%$mediasinger%'";

Gọi mysql_query() với query này.

[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 21/07/2006 00:44:27 (+0700) | #24 | 8386
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
ohhhhhhhhhh em làm được rồi bác thang2rs ui, phần chạy query cũng phải thêm cái này nữa $mediasinger=mysql_real_escape_string($mediasinger); vì phần input data và phần chạy query của em ở 2 file khác nhau mà...

Cám ơn bác rất nhiều, bộ lọc của bác rất tuyệt

cho em hỏi thêm: bác nói % giống * trong Dos, vậy cụ thể trong sql người ta thường dùng với mục đích gì vậy? trong các trường hợp nào?

Em chỉ còn phần session đáng ghét nữa thôi smilie có lẽ phải dùng đến chiêu cuối cùng là thêm @ vào session_start
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 21/07/2006 02:27:52 (+0700) | #25 | 8439
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]
Rất đơn giản, giả sử bạn có $mediasinger='my tam' thì '%$mediasinger%' chỉ tất cả các string có chứa 'my tam' ('ca si my tam' chẳng hạn).

Tuy nhiên đây chỉ là một search đơn giản. Đối với các search phức tạp đòi hỏi tốc độ xử lí, đánh giá kết quả tìm được, lọc các kí tự thừa... thì phải tính đến tính năng mới full-text search của các phiên bản MySQL sau này.
[Up] [Print Copy]
  [Question]   fix giùm tôi lỗi trong php 21/07/2006 23:40:17 (+0700) | #26 | 8745
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
thanks pro!
lại nói về vấn đề search , em đang mắc khi search chuỗi có chứa ký tự meta bác ui.

dùng bộ lọc của bác thực chất khi gặp ký tự meta sẽ thêm vào đắng trước ký tự /vì vậy khi search chuỗi có chứa ký tự meta tức có / sẽ báo lỗi query ngay, phải giải quyết vấn đề này thế nào bác ui
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 24/07/2006 22:47:08 (+0700) | #27 | 9574
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]

dùng bộ lọc của bác thực chất khi gặp ký tự meta sẽ thêm vào đắng trước ký tự /vì vậy khi search chuỗi có chứa ký tự meta tức có / sẽ báo lỗi query ngay, phải giải quyết vấn đề này thế nào bác ui
 


Đành phải nhắc lại với bạn là việc thêm \ trước các kí tự đặc biệt là bắt buộc.

Có thể lỗi mà bạn gặp là do 2 lần gọi mysql_real_escape_string() (bạn nói là do ở 2 file khác nhau gì đó)? Tuy nhiên, dù thế nào thì có thể bạn không tìm được kết quả như mong đợi chứ không thể gây lỗi được.

Bạn cho xem chính xác chuỗi query trước khi gọi mysql_query() mà bạn nói là gây lỗi đi!

[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 25/07/2006 05:31:58 (+0700) | #28 | 9677
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]

thang2rs wrote:

Đành phải nhắc lại với bạn là việc thêm \ trước các kí tự đặc biệt là bắt buộc.
 

Em cũng nghĩ vậy, mọi thứ tốt cả em chỉ gặp trục trặc về phần search

Có thể lỗi mà bạn gặp là do 2 lần gọi mysql_real_escape_string() (bạn nói là do ở 2 file khác nhau gì đó)? Tuy nhiên, dù thế nào thì có thể bạn không tìm được kết quả như mong đợi chứ không thể gây lỗi được.

Bạn cho xem chính xác chuỗi query trước khi gọi mysql_query() mà bạn nói là gây lỗi đi!

 

tất nhiên em thử hết các cách rồi bác à, ví dụ chuỗi là I'm MatNai Khi ko thêm mysql_real_escape_string() sẽ có giá trị như vậy Nếu thêm mysql_real_escape_string() vào để lọc sẽ lấy giá trị thật là I\'m MatNai

Nhưng vấn đề khi em muốn search từ khoá này link form search sẽ bị ngắt quãng khi gặp ký tự ' ở đây chưa nói đến việc query search gặp lỗi gì mà vấn đề là link của form search bị ngắt quãng, ví dụ như từ khoá trên link search sẽ là index.php?act=search&kw=I chuỗi đằng sau sẽ bị mất vì gặp dấu '

Em thấy code của các forum thường sẽ đổi các ký tự này khi search dạng %20%26...

Help me!
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 25/07/2006 22:58:43 (+0700) | #29 | 9863
thang2rs
Member

[Minus]    0    [Plus]
Joined: 06/07/2006 18:45:35
Messages: 46
Offline
[Profile] [PM]

ví dụ như từ khoá trên link search sẽ là index.php?act=search&kw=I chuỗi đằng sau sẽ bị mất vì gặp dấu '
 


Wow! Vấn đề giờ đã theo hướng hoàn toàn khác. Hãy thử:

Code:
if (get_magic_quotes_gpc()) {
	$mediasinger=stripslashes($_POST['mediasinger']);
} else {
	$mediasinger=$_POST['mediasinger']; 
}

$querystring='act=search&kw='.urlencode($mediasinger);
$urlstring='index.php?'.htmlentities($querystring);


Sau đó trong index.php (lưu ý $_GET):

Code:
if (get_magic_quotes_gpc()) {
	$mediasinger=stripslashes($_GET['kw']);
} else {
	$mediasinger=$_GET['kw']; 
}

$mediasinger=mysql_real_escape_string($mediasinger);


Rồi xây dựng $query như ta đã làm.
[Up] [Print Copy]
  [Question]   Re: fix giùm tôi lỗi trong php 26/07/2006 04:48:28 (+0700) | #30 | 9959
matnai01
Member

[Minus]    0    [Plus]
Joined: 01/07/2006 01:11:40
Messages: 27
Offline
[Profile] [PM]
toẹt vời smilie) cám ơn bác Thang2rs nhìu nhìu

Em chưa hiểu dùng cái này
Code:
if (get_magic_quotes_gpc()) {
 	$mediasinger=stripslashes($_GET['kw']);
 } else {
 	$mediasinger=$_GET['kw']; 
 }
 
 $mediasinger=mysql_real_escape_string($mediasinger);

làm gì, vì em ko dùng vẫn search được mà bác, để chống injection khi search à bác?

cho em hỏi thêm về cái title khi di chuột vào tên singer có dấu ' cũng bị ngắt quãng luôn, phải dùng hàm gì bác ui?

Hàm gì để lấy ký tự đầu tiên và cuối cùng của chuỗi bác nhẩy, vì khi người ta nhập dấu cách vào đầu hoặc sau chuỗi sẽ gây rối loạn bộ search của em, em muốn lọc luôn khi user đăng bài, mà làm sao làm mất dấu cách ở đầu(or cuối) đi được bác, dùng hàm str_change có được ko?

Em hỏi nhiều câu quá bác trả lời giùm he, làm phiền bác nhìu!
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|