2013-06-09 25 views
6

Vấn đề của tôi là:PHP: lấy giá trị của textbox sau đó vượt qua nó vào một BIẾN

Tôi muốn nhận được giá trị của TextBox1 sau đó chuyển nó vào một trang khác mà giá trị của TextBox1 sẽ được xuất hiện trong TextBox2.

Dưới đây là mã của tôi cho PHP:

<html> 
<body> 

<form name='form' method='post' action="testing2.php"> 

Name: <input type="text" name="name" id="name" ><br/> 

<input type="submit" name="submit" value="Submit"> 

</form> 
</body> 
</html> 

Tôi cũng thêm vào mã bên dưới và lỗi là "Thông báo: chỉ số Undefined: Tên"

<?php 
$name = $_GET['name']; 
echo $name; 
?> 

hoặc

<?php 
$name = $_POST['name']; 
echo $name; 
?> 
+0

quấn nó quanh 'if (isset ($ _ POST ['name']))' –

+0

Trong form của bạn, bạn đã chỉ định phương thức 'post', vì vậy trong mã php của bạn, bạn nên tìm giá trị trong' $ _POST' mảng, do đó, '$ _POST ['name']' – Havelock

+0

Và không sử dụng 'isset' như Dave Chen đề nghị, hãy sử dụng' if (! trống ($ _ POST ['name']) 'thay thế. –

Trả lời

10

Trong testing2.php sử dụng đoạn mã sau để có được tên:

if (! empty($_POST['name'])){ 
    $name = $_POST['name']); 
} 

Khi bạn tạo trang tiếp theo, sử dụng giá trị của $name để điền trước trường mẫu:

Name: <input type="text" name="name" id="name" value="<?php echo $name; ?>"><br/> 

Tuy nhiên , trước khi thực hiện điều đó, hãy đảm bảo sử dụng cụm từ thông dụng để xác minh rằng $ name chỉ chứa các ký tự hợp lệ, chẳng hạn như:

$pattern = '/^[0-9A-Za-zÁ-Úá-úàÀÜü]+$/';//integers & letters 
if (preg_match($pattern, $name) == 1){ 
    //continue 
} else { 
    //reload form with error message 
} 
+0

Cảm ơn bạn đã cung cấp thông tin cho các ký tự hợp lệ. Tôi có thể sử dụng nó trong tương lai :) và nó hoạt động quá! –

+0

Bạn được chào đón. –

+0

Câu trả lời này là tốt, nó khuyến khích người mới bắt đầu làm cho trang web của họ được bảo mật hơn! –

1

Bạn đang đăng dữ liệu, vì vậy nó phải là $ _POST. Nhưng 'tên' không phải là tên tốt nhất để sử dụng.

name = "name" 

sẽ chỉ gây nhầm lẫn IMO.

+0

Oh. Xin lỗi ... Cảm ơn thông tin :) –

+0

'+ 1' - bạn có một điểm. –

3

Tôi nghĩ bạn cần kiểm tra giá trị đặt trước và không trống, như biểu mẫu đã được gửi mà không có dữ liệu đầu vào, do đó, thiết lập isset Điều này sẽ ngăn bạn có bất kỳ lỗi hoặc thông báo nào.

if((isset($_POST['name'])) && !empty($_POST['name'])) 
{ 
    $name = $_POST['name']; //note i used $_POST since you have a post form **method='post'** 
    echo $name; 
} 
+0

'empty() không tạo ra cảnh báo nếu biến không tồn tại.' Vì vậy, bạn chỉ cần' empty' hoặc chỉ 'isset'. –

+1

@DaveChen Đó là một vấn đề khác - OP nên đi sâu vào hướng dẫn và tìm hiểu khi anh ta kiếm được. ;-) Trong phương trình này, '$ earns =" ​​Knowledge ";' –

+0

Oh. cảm ơn bạn rất nhiều .. Nó hoạt động! Tôi có câu hỏi cuối cùng ... làm cách nào để chuyển biến $ name thành hộp văn bản? –

0

Bên testing2.php bạn nên in mảng $_POST chứa tất cả các dữ liệu từ các bưu điện. Ngoài ra, $_POST['name'] sẽ khả dụng. Để biết thêm thông tin, hãy kiểm tra $_POST trên php.net.

Các vấn đề liên quan