2016-04-27 4 views
0

So habe ich eine Website, die ein Register/Login-System für Benutzer verwendet, um ein Konto zu erstellen. Ich hatte die Seite einwandfrei funktionierend auf meinem localhost mit MAMP. Allerdings habe ich meine Website und Datenbank auf einen Live-Server hochgeladen und erhalte Fehler. Unten ist die Registerseite. Wenn ein Benutzer registriert, sollte es sie auf ihr Konto Seite nehmen, aber das Register Seite aktualisiert und sie erhalten die folgenden Fehler:PHP Fehler auf Live-Site, funktioniert gut auf localhost

Warning: session_start(): Kann nicht Session-Cookie senden - Header bereits gesendet von (Die Ausgabe wurde unter /srv/disk4/2113278/www/lucasclarke.co.nf/webTechFinal/connections.php:16) in /srv/disk4/2113278/www/lucasclarke.co.nf/webTechFinal/Register.php in Zeile 7 gestartet

Warning: session_start(): Kann nicht Session Cache senden - headers already sent (Ausgang bei /srv/disk4/2113278/www/lucasclarke.co.nf/webTechFinal/connections.php:16 gestartet) in/srv/disk4/2113278/www/lucasclarke.co.nf/webTechFinal/register.php auf Linie 7

Warnung: - Header bereits gesendet von (Ausgabe startete/srv/disk4/2113278/www/lucasclarke kann nicht Header-Informationen ändern. co.nf/webTechFinal/connections.php:16) in /srv/disk4/2113278/www/lucasclarke.co.nf/webTechFinal/Register.php on line 16

Beachten Sie, dass die Informationen der Benutzer Register DOES gehe in meine Datenbank richtig, aber die Webseite funktioniert nicht so wie auf meinem localhost. Irgendwelche Gedanken? Danke im Voraus.

<?php require 'connections.php'; ?> 

<?php 

    if(isset($_POST['register'])) { 

     session_start(); 

     $fname = $_POST['first_name']; 
     $lname = $_POST['last_name']; 
     $email = $_POST['email']; 
     $pw = $_POST['password']; 

     $sql = $con->query("INSERT INTO user (Fname, Lname, Email, Password)Values('{$fname}', '{$lname}', '{$email}', '{$pw}')"); 

     header('Location: Login.php'); 
     } 
?> 

<!------------------------------------------------------------------> 

<!DOCTYPE HTML> 
<html lang="en"> 
    <head> 
     <title>Notekeep</title> 
     <link rel="stylesheet" type="text/css" href="stylesheet.css"> 
    </head> 

    <body> 

      <div class="container"> 

       <h1 class="title">Register<img src="logo.png" id="logo"></h1> 

      <form action="" method="post" name="registerform" id="registerform"> 
       <div> 
        <input name="first_name" type="text" required="required" id="first_name" placeholder="First Name"> 
       </div> 
       <div> 
        <input name="last_name" type="text" required="required" id="last_name" placeholder="Last Name"> 
       </div> 
       <div> 
        <input name="email" type="email" required="required" id="email" placeholder="Email"> 
       </div> 
       <div> 
        <input name="password" type="password" required="required" id="password" placeholder="Password"> 
       </div> 
       <div> 
       <!-- <input name="password2" type="password" required="required" id="password2" placeholder="Re-Enter Password"> --> 
       </div> 
      <div> 
        <input name="register" type="submit" class="button" id="register" value="Register"> 
       </div> 
      </form> 

      <a class="link" href="Login.php">Login</a> 

      </div> 
    </body> 

</html> 
+1

Überprüfen Sie Zeile 16 von connections.php – Musa

+0

Der Raum nach ' 'kann nicht da sein. Der Server zählt diesen Speicherplatz als Ausgabe an den Browser, der einen Fehler auslöst. Entfernen Sie die '?>' Und die ' Rasclatt

+0

Sie sollten auch' exit; 'nach Ihrer' header ('Location: Login.php'); '. – Rasclatt

Antwort

0

Wie ich in meinen Kommentaren erwähnt, sollten Sie Ihre Header wie folgt aussehen:

<?php 
require('connections.php'); 
// Remove space, should be continuous 
// I would personally start session here 
session_start(); 
if(isset($_POST['register'])) { 
    $fname = $_POST['first_name']; 
    $lname = $_POST['last_name']; 
    $email = $_POST['email']; 
    $pw = $_POST['password']; 

    // !! This is injection-prone !! 
    // You need to use bind parameters, this is unsafe 
    $sql = $con->query("INSERT INTO user (Fname, Lname, Email, Password)Values('{$fname}', '{$lname}', '{$email}', '{$pw}')"); 

    header('Location: Login.php'); 
    // Add here so the script stops execution 
    exit; 
} 
?> 

Auch Kenntnis von der SQL-Injection-nehmen, die Sie anfällig sind. Sie sollten Parameter verwenden Bindung:

function insertNewUser($array,$con) 
    { 
     foreach($array as $key => $value) { 
      $key    = trim($key,':'); 
      $new[":{$key}"] = $value; 
     } 
     // I am assuming the use of PDO 
     $query = $con->prepare("INSERT INTO `user` (`Fname`,`Lname`,`Email`,`Password`) VALUES (:0,:1,:2,:3)"); 
     $query->execute($new); 
    } 

Verwendung:

$data = array(
       $_POST['first_name'], 
       $_POST['last_name'], 
       $_POST['email'], 
       $_POST['password'] 
      ); 

// Use the function 
insertNewUser($data,$con); 

header('Location: Login.php'); 
exit; 

Schließlich sollten Sie Klartext werden Einfügen keine Passwörter in der Datenbank. Sie sollten password_hash() und password_verify()(oder kompatible Bibliothek) verwenden.

Verwandte Themen