Не удается заставить работать скрипт PHP, он отображается как пустая страница - PullRequest
1 голос
/ 07 августа 2011

вот код, который создает простой профиль пользователя со списком сообщений:

<html>
<head>
<title>Welcome ! </title>
</head>
<body>

<?php
$dbcon = mysql_connect('localhost','user','password');
if(!$dbcon)
{
die('<p>'.'Unable to connect to database server'.mysql_error().'</p>');
}
?>

<?php
//select the database
mysql_select_db("rough_site",$dbcon);
//add the user 
$user_name = mysql_real_escape_string($_POST['user_name'];
$user_password =mysql_real_escape_string($_POST['user_password'];
$user_mail=mysql_real_escape_string($_POST['user_mail'];
$adduser= "INSERT INTO user (user_name, user_password, user_mail) VALUES ($user_name, 
$user_password, $user_mail)";
$confirmUser = mysql_query($adduser);
if(!$confirmUser) 
{
die("Sorry , but you could not be added as a member of this site . ");
}
?>


<p align="center" ><h2><em>Latest posts by you </em></h2></p><br/>
<?php
// show the latest posts by this user 
$user_name = $_POST['user_name'];
$latestposts = "SELECT post_id , post_title  from posts ,users where  
posts.user_name=users.$user_name " ;
$showlatestposts= mysql_query($latestposts);

?>

<blockquote>
<?php
while($row=mysql_fetch_array($showlatestposts) )
{
echo '<p>'. '<a href = "showpost.php?post_id='. $row['post_id'].'">'.         
    $row['post_title'].'</a></p><br/>' ;
}
?>
</blockquote>


</body>
</html>

Ответы [ 5 ]

2 голосов
/ 07 августа 2011

Вы проверяли свой лог-файл?Включите error_reporting (E_ALL) или, возможно, добавьте die (mysql_error ());в ваших запросах ... Это может помочь узнать, что не так!

И если вы делаете INSERT INTO

Это должно быть

INSERT INTO VALUES пользователей (....) а не SET

SET предназначен для обновления

1 голос
/ 07 августа 2011

Ваш запрос INSERT имеет неправильный синтаксис, и затем вы вызываете функцию die (), что, в свою очередь, приводит к пустой странице.

Исправьте запрос, и все будет хорошо.

Обновление и причина вашей проблемы:

У вас есть:

$user_name = mysql_real_escape_string($_POST['user_name'];
$user_password =mysql_real_escape_string($_POST['user_password'];
$user_mail=mysql_real_escape_string($_POST['user_mail'];

и должно быть:

$user_name = mysql_real_escape_string($_POST['user_name']);
$user_password =mysql_real_escape_string($_POST['user_password']);
$user_mail=mysql_real_escape_string($_POST['user_mail']);

Вы не закрываете функцию скобками

0 голосов
/ 07 августа 2011

в браузере, если вы идете «просмотреть источник», вы можете увидеть текст ошибки, он может быть скрыт от обычного просмотра из-за недопустимого HTML

здесь, вероятно, одинарные кавычки, вызывающие синтаксическую ошибку.

$adduser= "INSERT INTO users set 
user_name=$_POST['user_name'],
user_password=$_POST['user_password'],
user_mail =$_POST['user_mail']";

попробуйте это вместо этого (см. Одиночные кавычки в [] удалены, поскольку вся строка заключена в кавычки, это не требуется

$adduser= "INSERT INTO users set 
user_name='$_POST[user_name]',
user_password='$_POST[user_password]',
user_mail = '$_POST[user_mail]'";

, как другие рекомендовали, вы должны дезинфицировать ваши sql пармы как то так

$user_name = mysql_escape_string($_POST['user_name']);
$user_password = mysql_escape_string($_POST['user_password']);
$user_mail = mysql_escape_string($_POST['user_mail']);

$adduser= "INSERT INTO users set 
user_name='$user_name',
user_password='$user_password',
user_mail = '$user_mail'";
0 голосов
/ 07 августа 2011

Чтобы вставить значение из массива с именованным ключом в строку и использовать отметки '', необходимо заключить его в {} - http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing (сложный (фигурный) синтаксис) Так, например,

$adduser= "INSERT INTO users set 
user_name=$_POST['user_name'],
user_password=$_POST['user_password'],
user_mail =$_POST['user_mail']";

должно быть

$adduser= "INSERT INTO users set 
user_name=\"{$_POST['user_name']}\",
user_password=\"{$_POST['user_password']}\",
user_mail =\"{$_POST['user_mail']}\"";
0 голосов
/ 07 августа 2011

Поместите это в верхнюю часть вашего файла:

<?php
    error_reporting(E_ALL);
    ini_set('display_errors','On');
?>

Я предполагаю, что есть ошибка, о которой вам не сообщают, это включит сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...