【问题标题】:Echo not printed on page using php使用php在页面上未打印回声
【发布时间】:2011-07-15 08:41:13
【问题描述】:

我正在尝试使用 php 创建网页。问题是有时我会收到服务器错误,有时我什么也得不到。有一次,服务器更改了文件类型本身。我不知道问题可能是什么。

因为我实际上不知道问题出在哪里,所以我将整个文件粘贴在这里,即使我认为问题出在前几行(我把它放在这里:http://www.iandapp.com/smic/subscription.php):

<?php header('Content-Type: text/html; charset=ISO-8859-1');

echo("<div id='subscribe'>");

$mail = $_POST['email1'];

//Set the locale format, etc. of date and time
date_default_timezone_set('Europe/Stockholm');
setlocale(LC_TIME, "sv_SV");

//Create the db-connection
$mysqli = mysqli_connect("mydb", "myuser", "mupsw", "myschema", "3306");

//If verifying the subscription, makse sure the db is updated accordingly
if($_GET['newid'] != ""){
    //Make the subscriber a verified subscriber
    $result = mysqli_query($mysqli,"UPDATE users SET subscriber = 1 WHERE id = " . $_GET['newid']);
    if($result){
        echo("<p>Welcome to our newsletter! We will send you information about any new application or update. This will not happen too often, but once it does we hope you will have the opportunity to look into our site again.<p/>");
        echo("<p><br/>If you wish to unsubscribe from this mail-list, please visit out subscription page: <a href="http://" . $_SERVER['HTTP_HOST'] . "/subscription.php"> http://" . $_SERVER['HTTP_HOST'] . "/subscription.php </a> <p/>");
    }else{
        echo("<p>Somthing went wrong, please click the link again!<p/>");
    }

}elseif($_POST['email1'] != ""){ //Only do things if there is an e-mail posted

    //Make sure the ID is unique
    do{
        $rand_int = rand(100000000, 999999999);
        $result = mysqli_query($mysqli, "SELECT id FROM users WHERE id = " . $rand_int);

        $no_of_rows = mysqli_num_rows($result);

        }while($no_of_rows != 0);
    echo("RAND :".$rand_int);

    //Create query for saving the new user e-mail
    $query = "INSERT INTO users(id, email, first_name, surname) VALUES ('" . $rand_int . "', '".$_POST['email1']."', '". $_POST['first_name']."','".$_POST['surname']."')";
    $re = mysqli_query($mysqli, $query);
    echo("Result: ".$re);

    //Check if mail already exist (Error code 1062 = dublicate entries for unique fields)
    $existing = 0;
    if(mysqli_errno($mysqli)==1062){
        echo("It seems like your e-mail already is registered. Perhaps you have been a subscriber earlier? By clicking the link that you will receive in your mail box you subscribe to the newsletter again. ");
        $existing = 1;
        $result = mysqli_query($mysqli,"SELECT id FROM users WHERE email = '" . $_POST['email1'] . "'");
        $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
        $rand_int = $row['id'];
        mysqli_query($mysqli,"UPDATE users SET waiting_for_unsubscribe = 0 WHERE email = '" . $_POST['email1'] . "'");
        if(mysqli_errno($mysqli)){
        echo("Error code " . mysqli_errno($mysqli) . "<br/>");
        echo("Error text " . mysqli_errno($mysqli) . "<br/>");
    }
        //echo("ID------ " . $row['id'] . " ri---- " . $rand_int);
    }



    //Create the link for the user to verify the subscription
    $url = "http://" . $_SERVER['HTTP_HOST'] . "/smic/subscription.php?newid=" . $rand_int;     


    $mymail = $_POST['email1'];
    $esubject = "Please verify your subscription to iAndApp's newsletter ";
    $body = "Click the link in order to verify your subscription (If you cannot click the link, just copy it and paste it into the adress field of your browser): " . $url;
    $eemail = "NoReply@iandapp.com";
    $sent = mail($mymail,$esubject,$body,"From: $eemailn");
    if($sent){
        if($existing != 1){
            echo "<br/>An e-mail with a link has been sent to ". $mymail . ". Please click the link in order to verify your subscription";
        }
    }else{
        echo "Something went wrong. Please try again and make sure you enter a correct e-mail adress.";
    }
    $existing = 0;

mysqli_free_result($result);

//If unsubscribing
}elseif($_POST['unsubscribedmail'] != ""){
    //echo("Unsubscribe........");
    //echo($_POST['unsubscribedmail']);
    $result = mysqli_query($mysqli,"UPDATE users SET waiting_for_unsubscribe = 1 WHERE email = '" . $_POST['unsubscribedmail'] . "'");

    //echo("Err code " . mysqli_errno($mysqli));
    //echo("Err text " . mysqli_error($mysqli));
    if(mysqli_errno($mysqli)){
        echo("Error code " . mysqli_errno($mysqli) . "<br/>");
        echo("Error text " . mysqli_errno($mysqli) . "<br/>");
    }

    $result = mysqli_query($mysqli,"SELECT id FROM users WHERE email = '" . $_POST['unsubscribedmail'] . "'");
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
    //echo("ID------ " . $row['id']);
    //Create the link for the user to verify that he/she  unsubscribes
    $url = "http://" . $_SERVER['HTTP_HOST'] . "/smic/subscription.php?unsubscribeid=" . $row['id'];

    $mymail = $_POST['unsubscribedmail'];
    $esubject = "Please verify that you want to unsubscribe from iAndApp's newsletter ";
    $body = "Click the link in order to verify that you want to unsubscribe from iAndApp's newsletter (If you cannot click the link, just copy it and paste it into the adress field of your browser): " . $url;
    $eemail = "NoReply@iandapp.com";
    $sent = mail($mymail,$esubject,$body,"From: $eemailn");
    if ($sent) echo "<br/>A mail with a link has been sent to ". $mymail . ". Please click the link in order to verify that you will unsubscribe from the newsletters.";
    else echo "Something went wrong. Please try again and make sure you enter a correct e-mail adress.";

mysqli_free_result($result);    
}elseif($_GET['unsubscribeid'] != ""){
    $result = mysqli_query($mysqli,"UPDATE users SET subscriber = 0, waiting_for_unsubscribe = 0 WHERE id = " . $_GET['unsubscribeid']);
    if($result){
        echo("<p>You have now unsubscribed to the newsletter. Thank you for this time and we hope to see you again in the future. /iAndApp.<p/>");
    }else{
        echo("<p>Somthing went wrong, please click the link again!<p/> ".$result);
    }

}else{

echo("<div class="subscribe">
<h4>Subscribe</h4>
<p>Subscribe to iAndApp's newsletter in order to get information about new and updated iPhone games and iPhone applications, that has been released by iAndApp. </p>
<form action="subscription.php" name="subscribe" method="post"  onsubmit="return isValidEmailAndEqual()">
<p class="formlabel">Förnamn</p> <input type="text" name="first_name"/><br/>
    <p class="formlabel">Efternamn</p> <input type="text" name="surname"/> <br/>
<p class="formlabel">E-mail</p> <input type="text" name="email1"/>
<br/>
<p class="formlabel">Repeat e-mail</p> <input type="text" name="email2"/> <br/>
<input class="inputsubmit" type="submit" value="Subscribe"/>
</form>
</div>");

echo("<div class="footer"></div>");


echo("<div class="subscribe">
<h4>Unsubscribe</h4>
<p>Fill in your e-mail address and submit in order to unsubscribe from iAndApp's newsletter. </p>
<form action="subscription.php" name="unsubscribe" method="post"  onsubmit="return isValidEmail()">
<p class="formlabel">E-mail</p> <input type="text" name="unsubscribedmail"/><br/>
<input class="inputsubmit" name="submitbutton" type="submit" value="Unsubscribe"/>
</form>
</div>");

}

mysqli_close($mysqli);

echo("</div>");

?>

当然,我不希望您检查和调试整个应用程序,但也许对于更有经验的人来说,您知道去哪里寻找。

我开始有点压力了...

请告知问题是什么以及如何解决。

提前谢谢你!

【问题讨论】:

  • 究竟是什么没有回显出来?
  • 没有回声。如果您访问该链接,您将一无所获。
  • SQL Injection 警报..
  • 请您解释一下。由于我在第一次加载页面时没有访问数据库,这真的是原因吗,即使我也需要调查一下?

标签: php html server-error


【解决方案1】:

代码错误:

echo("<div class="subscribe">
<h4>Subscribe</h4>
<p>Subscribe to i

在第一行中,您只需用第二个引号关闭字符串 你只需要更正代码

【讨论】:

    【解决方案2】:

    您必须在 html 标签中转义双引号或使用单引号。现在,echo 认为它在"&lt;div class=" 之后关闭。使用其中之一:

    echo "<div class=\"class\">";
    

    echo '<div class="class">';
    

    echo "<div class='class'>";
    

    【讨论】:

    • 不,不会。再一次,它会认为你在 ...id=" 之后结束字符串。
    • 谢谢,这就是问题所在。很容易发疯。我从我创建的另一个站点窃取了代码,并且它一直在工作(但当然我现在开始怀疑......)。它已经休息了一段时间,我将它唤醒并尝试了它,现在它不起作用。开发并不总是很有趣... :)
    【解决方案3】:

    如果您没有从服务器获得任何回复(文档清晰),或者您有服务器错误,但这并非总是如此,有时脚本可以正常工作,这可能是内存限制问题。

    do{
        $rand_int = rand(100000000, 999999999);
        $result = mysqli_query($mysqli, "SELECT id FROM users WHERE id = " . $rand_int);
    
        $no_of_rows = mysqli_num_rows($result);
    
        }while($no_of_rows != 0);
    

    这部分代码不适合我,我建议你在 db 中的 id 字段使用 auto_increment(这样 id 将一直是唯一的)

    【讨论】:

    • 不,猜你是对的。我不认为这是我的问题的原因。我稍后会改进它。感谢您的意见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2015-02-02
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多