【发布时间】:2018-08-24 17:41:45
【问题描述】:
我是编码新手。我的离线软件生成的 php 代码在 localhost 和 mysql 上运行良好。但是一旦链接到 Google App Engine 标准环境的云 sql,php 表单就不会重定向到成功页面。虽然使用云sql,表单数据提交成功,但是出现一个空白屏幕,url没有变化。使用 localhost 时,提交表单后会显示成功页面。为了适应 GAE 云 sql 的代码,我手动插入了 $mysql_port 和 $mysql_Socket 变量,这些在 localhost 上工作的原始代码中没有。
代码是:-
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['formid']) && $_POST['formid'] == 'My-Form-Name')
{
$success_url = './success-page.html';
$error_url = './error-page.html';
$error = '';
$mysql_server = null;
$mysql_database = 'My-DB';
$mysql_table = 'My-Table';
$mysql_username = 'My-Username';
$mysql_password = 'My-Password';
$mysql_port = null;
$mysql_socket = '/cloudsql/CloudSql-Instance-Connection-Name';
$eol = "\n";
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password, $mysql_database, $mysql_port, $mysql_socket) or die('Failed to connect to database server!<br>'.mysqli_error($db));
mysqli_set_charset($db, 'utf8');
mysqli_query($db, "CREATE DATABASE IF NOT EXISTS $mysql_database");
mysqli_select_db($db, $mysql_database) or die('Failed to select database<br>'.mysqli_error($db));
mysqli_query($db, "CREATE TABLE IF NOT EXISTS $mysql_table (ID int(9) NOT NULL auto_increment, `DATESTAMP` DATE, `TIME` VARCHAR(8), `IP` VARCHAR(15), `BROWSER` TINYTEXT, PRIMARY KEY (id))");
foreach($form_data as $name=>$value)
{
mysqli_query($db ,"ALTER TABLE $mysql_table ADD $name VARCHAR(255)");
}
mysqli_query($db, "INSERT INTO $mysql_table (`DATESTAMP`, `TIME`, `IP`, `BROWSER`, `REFERER`)
VALUES ('".date("Y-m-d")."',
'".date("G:i:s")."',
'".$_SERVER['REMOTE_ADDR']."',
'".$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF']."',
'".$_SERVER['HTTP_USER_AGENT']."')")or die('Failed to insert data into table!<br>'.mysqli_error($db));
$id = mysqli_insert_id($db);
foreach($form_data as $name=>$value)
{
mysqli_query($db, "UPDATE $mysql_table SET $name='".mysqli_real_escape_string($db, $value)."' WHERE ID=$id") or die('Failed to update table!<br>'.mysqli_error($db));
}
mysqli_close($db);
header('Location: '.$success_url);
exit;
}
成功和错误页面是项目的内部页面。 应用 yaml 有以下处理程序:
# TO serve static
- url: /(.*\.(html$|css$|js$|svg$|))
static_files: \1
upload: (.*\.(html$|css$|js$|svg$))
application_readable: true
# to serve all php scripts
- url: /(.+\.php)$
script: \1
使用cloud sql提交表单后如何成功重定向到success-page.html?另外,成功页面可以是.php页面还是必须是.html页面?
在下面的第一个帮助之后,发现重定向或 Cloud SQL 一次可以工作。如果我们删除 cloud sql 部分,则重定向工作,如果我们忽略重定向部分 Cloud SQL 成功地将数据放入表中,但不会重定向。在这里,我专门命名 Cloud SQL,因为 Redirect 在 localhost 上使用 MySQL。 请进一步帮助如何使用云 sql 表单重定向 php 页面。
提前谢谢你。
【问题讨论】:
标签: php mysql yaml google-cloud-sql