View Full Version : [Q] Hỏi về PHP
Các bạn cho mình hỏi chút
Mình định code một trang nhật ký bằng PHP
Nhưng mình nghĩ thế này, mình sẽ đưa nó lên một server dùng chung với vài người khác nữa.
Như vậy, người ta có thể vào để xem code hoặc database và như thế thì... í ẹ, chẳng còn gì là riêng tư nữa.
Mình muốn xin một đoạn code, để sao cho, mỗi khi vào trang web đó, nó bắt mình phải nhập một password, nó sẽ ko check tính đúng sai của pass này mà sẽ dựa vào pass này để dịch ngược lại data trong database cho mình. Tất nhiên, khi save vào database nó cũng dùng pass này để mã hoá data.
Nếu có ví dụ bằng XOR thì tốt quá, liệu một string có thực hiện xor với một string được không ???
Thanks for all.:)
White_Rose
29-09-2002, 17:59
Hình như PHP hỗ trợ sẵn hàm MD5 để mã hoá 1 chiều, an toàn hơn đó bạn à.
Cám ơn bạn đã giúp,
Nhưng mà hàm md5 chỉ mã hoá một chiều thôi, thế thì làm sao mình xem được những gì mình viết :)
Bạn chưa đọc kỹ bài post của mình ???
Nếu dùng chung database thì thua... cái vấn đề này cần phải hỏi host để nó phân ra... nếu database của bạn là an toàn thì vấn đề tiếp theo là php.
có thể dùng code sau:
Giả sử password thành viên của bạn được mả hoá md5 thì như sau:
Code nay vua viet chua duoc test... ban co the tham khao sau do test du`m...
<?
ob_start(); // buffer
if($_COOKIE[user_code])
{
echo"Phan rieng tu cua thanh vien cua ban";
}
else
{
if(!$_POST[username]||!$_POST[password])
{
?>
<form method="post">
Username: <input type="text" name="username">
<br>
Password: <input type="password" name="password">
<br>
<input type="submit" value="log in">
</form>
<?
{
$password=md5($_POST[password]); // nghia la luc dang ky thanh vien ban phai md5($_POST[password] sau do luu vao database voi field password la VARCHAR(32))
$query=mysql_query("SELECT count(*) AS count FROM tablusercuaban WHERE username='$_POST[username]' AND password='$password' ");
$farr=mysql_fetch_array($query);
if($farr[count]<=0)
{
echo"False";
}
else
{
echo"True";
setcookie("user_code",$password,time()+1800); // luu trong 1800 giay
}
}
}
?>
vuminhphan
29-09-2002, 20:18
hi,
bạn có thể viết 1 function encode decode cho riêng mình (1 function đơn giản thôi, ví dụ linear encryption chẳng hạn). Chuyện này thì dễ thôi, chỉ cần áp dụng 1 linear permutation function nào đó (ví dụ f(x)=a*x+b) chẳng hạn, rồi encode tứng character... Khi lưu vào db thì encode nó. Khi đọc password đúng thì decode nó ra trở lại. Bạn đừng trông chờ vào các hàm encode và decode có sẳn, vì nếu bạn decode được thì người khác cũng làm được.
thân,
Có thể tạo file logout.php:
<?
setcookie("user_code",0,0); // set cookie user_code bang 0 la empty va gioi han bang 0 nghia la ton tai nhung khong con valid
header("location: url"); //url la dia chi ban muon quay ve thi du trang login chang han...
?>
Nghĩa là lúc này password được lưu vào database là một đoạn md5.. kể cả admin hay ai đó cũng không biết nó là cái gì chỉ có người user đó biết thôi
thì Forum VBB là mã hoá password của member bằng MD5 đó mà.
Admin cũng đâu có biết được password của member đâu.
Thanks to Teekai, vuminhphan, and bonbon. Mình sửa Code của Teekai một chút là ứng dụng được rồi :)
Các bạn cho hỏi cách lập trình để send được nhiều mail một lúc. Dùng hàm mail() chậm quá, mà có khi còn chẳng đến nơi. Có ai biết cách dùng SMTP không, xin chỉ giáo.
Thanks :)
send mail ?
dùng vòng lặp for cho loop lênh mail() ... :D
Nhưng mà dùng mail() thì lâu đến nơi lắm, làm cách nào để user vừa "Submit" một cái là "bùm" đến nới luôn mới thích :rolleyes: lol
Deathly Smile
30-09-2002, 19:53
Sử dụng FTP để upload lên host.
Dùng phpMyAdmin để quản lý DB
Khi dùng phpMyAdmin nên bảo vệ thư mục đó, nguy hiểm lắm. Còn nếu send mail dùng hàm mail() thì mail chừng 250 lá là server chết ngắc!
Có cách dùng SMTP... có viết sản một function rồi nhưng để ở nhà gùi.. mai mốt send cho vtv4...
Mai tui gửi vào đây
nettouch
30-09-2002, 22:34
xài SMTP mà dùng cho Newsletter thì tuyệt nhỉ, n Teek biết code mà sao không code cho Newsletter của anh luôn (ver 1.5 anh vẫn xài mail() ) ... Mai dzô coi liền á, n Teek post sớm nhe ... :D
Bài viết được gửi bởi embe
Khi dùng phpMyAdmin nên bảo vệ thư mục đó, nguy hiểm lắm. Còn nếu send mail dùng hàm mail() thì mail chừng 250 lá là server chết ngắc!
Nhưng hình như khi đọc code của Forum VBulletin, Bon thấy họ cũng dùng lệnh mail() để gởi mail thông báo cho các thành viên đó.
Cũng chỉ là một vòng lặp thôi à.
bonbon, bon không thấy nó có chế độ send bao nhiêu mail trong 1 lần gửi hả. Mỗi lần nó send 500 lá, sau mỗi nó sẽ delay 1 thời gian timeout nào đó, tui nghĩ vậy đó.
Teekai, nếu rãnh thì send anh cái code admin với cái code SMTP luôn đi, anh cám ơn nhiều.
OK đọc ở phía dưới cùng của bài này!
////////////////////////////////////////////////////////////////////
<?
function smtp_open($server, $port)
{
global $SMTP_GLOBAL_STATUS;
$smtp = fsockopen($server, $port);
if ($smtp < 0) return 0;
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "2") return 0;
return $smtp;
}
function smtp_helo($smtp)
{
global $SMTP_GLOBAL_STATUS;
fputs($smtp, "helo localhost\r\n");
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "2") return 0;
return 1;
}
function smtp_mail_from($smtp, $from)
{
global $SMTP_GLOBAL_STATUS;
fputs($smtp, "MAIL FROM: <$from>\r\n");
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "2") return 0;
return 1;
}
function smtp_rcpt_to($smtp, $to)
{
global $SMTP_GLOBAL_STATUS;
fputs($smtp, "RCPT TO: <$to>\r\n");
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "2") return 0;
return 1;
}
function smtp_data($smtp, $subject, $data)
{
global $SMTP_GLOBAL_STATUS;
fputs($smtp, "DATA\r\n");
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "3") return 0;
fputs($smtp, "Mime-Version: 1.0\r\n");
fputs($smtp, "Subject: $subject\r\n");
fputs($smtp, "$data\r\n\r\n");
fputs($smtp, ".\r\n");
$line = fgets($smtp, 1024);
if (substr($line, 0, 1) <> "2")
return 0;
return 1;
}
function smtp_quit($smtp)
{
global $SMTP_GLOBAL_STATUS;
fputs($smtp, "QUIT\r\n");
$line = fgets($smtp, 1024);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] = substr($line, 0, 1);
$SMTP_GLOBAL_STATUS[$smtp]["LASTRESULTTXT"] = substr($line, 0, 1024);
if ($SMTP_GLOBAL_STATUS[$smtp]["LASTRESULT"] <> "2") return 0;
return 1;
}
// Bắt đầu từ đây nè
$subject = ""; // Tựa đề email
$message = ""; // Nội dung email
$FromUser = ""; // Email của bạn
$ToUser = ""; // Email của người muốn gửi
$SMTPServer = ""; // SMTP server của bạn mai.diendantinhoc.com chẳng hạn :D
$mail = smtp_open($SMTPServer, 25);
smtp_helo($mail);
smtp_mail_from($mail, $FromUser);
smtp_rcpt_to($mail, $ToUser);
smtp_data($mail, $subject, $message);
smtp_quit($mail);
?>
Cám ơn anh Teekai code nhé.
Cho em hỏi, cái SMTP ấy thì xem ở đâu thế hay phải gửi e-mail đến thắng hostmaster ???
Cho em hỏi thêm là muốn sử dụng function a() ở trong function b() thì có phải khai báo global function a() không? Và nếu có thì phải khai báo như thế nào ???
Có cách nào để viết một function mà function đó "sinh ra" một biến mới hay không ???
Ví dụ: Trước khi gọi test(); thì biến $a chưa tồn tại, nhưng sau khi gọi test(); thì echo "$a" sẽ cho ra "fdhfghfgxgfgfd" (# '') được không?
Nếu người ta dùng chung cả FTP với bạn thì chắc chỉ có cách mã hóa dữ liệu lưu vào DB mà thôi.
Yes email đến Hostmaster để biết smtp server address
Là sao bạn hỏi gì teekai vẫn chưa hiểu :D
Thanks to Vikhoa
Anh Teekai, em hỏi thế này:
function a(){.... return true; }
function b(){
...
if (a()){...}
...
}
Như vậy thì b() gọi đến a(), như thế có được không? Vì theo như tài liệu nói thì các biến toàn cục muốn dùng trong một function phải báo global. Vậy các hàm thì sao? Có dùng hàm này trong hàm kia được không
Không được đâu :)
vậy thì được nè:
<?
class func
{
var $in;
function a($e)
{
echo $this->in=$e;
}
function b()
{
func::a("in ra o day ne");
}
}
$func=new func;
$func->b();
?>
Thanks to Teekai.
Anh Teekai giảng giải cho em môt chút về foreach được không??? Em vẫn chưa hiểu về cái này lắm.
foreach? okay!
foreach để dùng lập một mảng dựa trên $key và $value (Biến bạn có thể đặt tùy thích không nhất thiết phải $key hay $value)
<?
$arr=array(
// "key"=>"value",
"vtv_4"=>"hoc php",
"teekai"=>"di choi",
"ai do"=>"dang o dau :P",
);
foreach($arr as $key=>$value)
{
echo "$key: $value<br>\r\n";
}
?>
Thanks to anh Teekai (mặc dù em đọc bài post này của anh không hiểu lắm ( :( lol lol lol ), sẽ nghiên cứu thêm ở sau.
Cho em hỏi cái này nhé,
Em viết code login script như sau:
$codelogin=md5($uv.$pv); // <~~ uv, pv la` <input type= ...>
if (findpass($uv)==$codelogin) //Tìm pass của một user có tên $uv
{
$cook="$uv|$codelogin";
setcookie("logined","$cook",time()+360000);
header("location:index.php");
}
Checkcook ở index.php:
list($uc, $pc)=explode("|",$HTTP_COOKIE_VARS["logined"]);
if (findpass($uc)!=$pc) // chưa login or cookie tà đạo
{ header("location:login.php"); }
Thế nhưng không hiểu sao sau khi đã login chuẩn u và p rồi mà vẫn ko vào được index, toàn bị đẩy sang login.php để login lại.
Em đã thêm đoạn code ở login.php, để show cái cookie sau khi login lên và show cái codelogin của user này ở trong Database để so sánh bằng mắt thì thấy hai cái là bằng nhau rồi, thế mà vẫn ko vào index được :( :( :(
ở file index.php cũng thêm code để show cái $uc, $pc và $codelogin của $uc ở trong database để so sánh thấy cũng y như nhau luôn, thế mà... chẳng hiểu sao nữa :(
sao không list cái function findpass($uc) gì đó
coi có lỗi không.. vậy sao anh biết được
Em làm được rồi, thêm một cái "|" vào cuối, có lẽ vấn đề nằm ở chỗ ký tự kết thúc chuỗi (cũng ko rõ lol ).
Hết cái để hỏi ;) Về code tiếp, rồi có gì không hiểu lại hỏi, thanks anh TK.
À mà cái user này ko biết của ai, ngại logout quá :D
Hỏi về PHP?
Các bạn cho mình hỏi chút: mình có 3 trang web, trang 1 viết bằng html có 2 biến truyền, trang thứ 2 viết bằng php, trang thứ 3 viết bằng php. Trang thứ 1 Submit sang trang thứ 2, trang thứ 2 Submit sang trang thứ 3, làm thế nào để từ trang thứ 3 ta lấy được 2 biến ở trang thứ 1.
Hỏi về php?
Làm thế nào để đưa 1 thuộc tính trong database của 1 người nào đó sang địa chỉ email của người đó (viết chương trình đưa 1 cách tự động)
capricorn
08-10-2002, 15:24
Bài viết được gửi bởi chilinh
Hỏi về PHP?
Các bạn cho mình hỏi chút: mình có 3 trang web, trang 1 viết bằng html có 2 biến truyền, trang thứ 2 viết bằng php, trang thứ 3 viết bằng php. Trang thứ 1 Submit sang trang thứ 2, trang thứ 2 Submit sang trang thứ 3, làm thế nào để từ trang thứ 3 ta lấy được 2 biến ở trang thứ 1.
Hello !
Cách nhanh nhất là dùng element "input type=hidden..."
để ghi lại giá trị truyền từ trang 1 vào form của trang 2. Từ trang 2 sang trang 3 thì đâu có vấn đề gì !?!
Có 1 cách khác là khởi tạo session từ trang 2 và truyền các biến lấy được từ trang 1 cho trang 3 qua session.
Và còn nhiều cách khác nữa...
Bye
;)
Hi mọi người, giúp mình với
Mình copy một đoạn code ở php.net dùng để creat thumbnail cho image, rồi save as file test.php nhưng mà khi chạy nó báo lỗi:
Fatal error: Call to undefined function: imagecreatefromgif() in /home/hoctro/public_html/longhp/test.php on line 11
Khắc phục thế nào bây giờ :(
Anh teekai có code creat thumbnail không cho em xin với!!!
link đây: http://www.thainguyencity.com/longhp/test.php
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.