當我使用表單運行 post 方法時,我的 PHP 頁面幾乎是空白的。我想知道是谷歌云平臺的問題還是我將應用程式加載到谷歌云平臺的方式有問題。這是我的 app.yaml:
runtime: php
env: flex
runtime_config:
document_root: .
handlers:
- url: /(. \.(html|png|jpg|js|css))$
static_files: \1
upload: . \.(html|png|jpg|js|css)$
- url: /.*
script: auto
entrypoint:
serve handler.php
env_variables:
CLOUDSQL_USER: root
CLOUDSQL_DB: COSGymPatronData
CLOUDSQL_PASSWORD: ************
CLOUDSQL_DSN: /cloudsql/cosgym:us-central1:cosgympatrondata
這是我的 handler.php:
<?php
ini_set('allow_url_fopen',1);
switch(@parse_url($_SERVER['REQUEST_URI'])['path']) {
case '/':
require 'index.php';
case '/index':
require 'index.php';
case '/index.php':
require 'index.php';
case '/result_contact.php':
require 'result_contact.php';
case '/checkout.php':
require 'checkout.php';
case '/loginAction.php':
require 'loginAction.php';
case 'signinAction.php':
require 'signinAction.php';
}
?>
這是我的 database.php 頁面:
<?php
function prepare_string($dbc, $string) {
$string = mysqli_real_escape_string($dbc, trim($string));
return $string;
}
define('DB_USER', get_env('CLOUDSQL_USER'));
define('DB_PASSWORD', get_env('CLOUDSQL_PASSWORD'));
define('DB_HOST', get_env('CLOUDSQL_DSN'));
define('DB_NAME', get_env('CLOUDSQL_DB'));
$dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
OR die('Could not connect to MySQL: ' . mysqli_connect_error());
mysqli_set_charset($dbc, 'utf8');
?>
最后,這是在前一個表單的操作頁面上運行的 php 示例:
<?php
require 'database.php';
$errors=[];
if(!empty($_POST['name'])) {
$name = $_POST['name'];
} else {
$name = NULL;
$errors[] = "<p>We need your name </p>";
}
if(!empty($_POST['email'])) {
$email = $_POST['email'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = "<p>Your email is incorrect '$email' </p>";
$email = NULL;
}
}else{
$errors[] = "<p>We need your email </p>";
$email = NULL;
}
if(!empty($_POST['subject'])) {
$subject = $_POST['subject'];
} else {
$subject = NULL;
$errors[] = "<p>We need your subject </p>";
}
if(!empty($_POST['message'])) {
$message = $_POST['message'];
} else {
$message = NULL;
$errors[] = "<p>We need your message </p>";
}
$name_clean = prepare_string($dbc, $name);
$email_clean = prepare_string($dbc, $email);
$subject_clean = prepare_string($dbc, $subject);
$message_clean = prepare_string($dbc, $message);
$q = "INSERT INTO Contact(name, email, subject, message) VALUES(?, ?, ?, ?)";
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param(
$stmt,
'ssss',
$name_clean,
$email_clean,
$subject_clean,
$message_clean
);
$result = mysqli_stmt_execute($stmt);
if (!$result)
{
$errors[]="<p>Error Access DB</p>";
}
if(count($errors)==0) {
echo "<p>Welcome to COS GYM Our managers will contact you</p>";
}else
{
foreach($errors as $err)
{
echo $err;
}
}
?>
我應該注意,我正在為 CloudSQL 和 App Engine 上運行的免費積分付費,并且資料看起來像是正在進入資料庫,所以結果頁面上的代碼似乎正在運行。幫助解決這個問題將不勝感激。
uj5u.com熱心網友回復:
在查看 app.yaml 時,AppEngine 的配置未正確定義。讓我們一次拆開一個元素。 運行時- 這應該是明確的,即 php73 或 php74 或 php55 runtime_config:這是不正確的,不屬于此背景關系的一部分,因為它屬于AppEngine 中的python 運行時選項
處理程式看起來不錯,但接下來我們有;入口點:
這意味著 handler.php 檔案確定發送請求的位置。
從這個檔案中,我們看到“/result_contact.php”需要“result_contact.php”,因此“contact.html”將是第 42 行到第 52 行的相關 POST 請求的來源。
由于代碼中沒有任何元素會導致顯示空白(明確地),這是 PHP 驅動的,很可能與代碼有關。由于 PHP 僅通過第 109 或 115 行在 result_contact.php 中添加回顯,因此您應該考慮回傳這些值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/406380.html
標籤:
