Permalänk
Medlem

Hjälp med PHP

Håller på med ett skolprojekt i PHP och jag blir inte klok på varför det inte funkar.
Försöker fixa en login funktion, och om man skriver in fel inloggnings uppgifter så ska man skickat tillbaka till login sidan.
dock så funkar inget jag försöker med om länkningen.
jag har dubbelt kollat att min databas funkar och den får rätt svar tillbaka. bara det att det verkar inte fatta att den ska om dirigera ändå.
här är db.php:

<?php $serverName = "(local)"; $uid = "banken"; $pwd = '************'; $connectionOptions = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"Banken"); $db = sqlsrv_connect($serverName, $connectionOptions); if( $db == false ) { die(print_r(sqlsrv_errors(), true)); } ?>

Här är login.php:

<?php require_once("db.php"); ?> <?php $username = $_POST['Username']; $userpass = $_POST['UserPass']; $query ="SELECT loginname, loginpass FROM Customers WHERE loginname = '{$username}' AND loginpass = {$userpass}"; $checklogin = sqlsrv_query($db, $query); $temp = sqlsrv_num_rows($checklogin); if($temp == 1) { header("Location: ca.php"); exit; } else { header("Location: index.php"); exit; } sqlsrv_close($db); ?>

Har dubbel kollat fler gånger och $temp blir verkligen ett, har försökt på flera andra sätt också men inget verkar funka.
jag använder för övrigt db.php på andra ställen och där funkar det perfekt. bara login som strular för mig.
Det ska nämnas att jag har ändrat i php.ini så att output buffering är påslaget.

Permalänk
Medlem

$query ="SELECT loginname, loginpass FROM Customers WHERE loginname = '{$username}' AND loginpass = {$userpass}";

borde nog vara

$query ="SELECT loginname, loginpass FROM Customers WHERE loginname = ".$username." AND loginpass = ".$userpass."";

Om det nu inte måste vara klamrar runt, då blir det såhär:

$query ="SELECT loginname, loginpass FROM Customers WHERE loginname = {".$username."} AND loginpass = {".$userpass."}";

Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem

nej userpass är bara nummer, i databasen är det representerat som int.

det är bara redir till ca.php som strular.
här kommer den:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <?php error_reporting(E_ALL); ?> <?php require_once("db.php"); ?> <link href="mall.css" rel="stylesheet" media="all""> <html> <head> <title>Customer area</title> </head> <body> <div id=centrering><br/><br/> <img src="bank_logo.png"> <div id=h1><br/> <?php if(isset($_POST['Username'])) { $query = "SELECT firstname FROM Customers WHERE loginname = '{$_POST['Username']}'"; $getData = sqlsrv_query($db, $query); $firstname = sqlsrv_fetch_array($getData); echo "Welcome {$firstname[0]}"; } ?> </div> <div> <form id="transfereMoney" name="transfereMoney" method="post" action="transfer.php"> <br/><br/> From Acount No: <br/> <input type="text" name="fromAccountID" id="fromAccountID"/><br/> To Account No: <br/> <input type="text" name="toAccountID" id="toAccountID"/><br/> Amount:</br> <input type="text" name="amount" id="amount"/><br/> <input type ="submit" name="transfer" id="transfer" value="transfer"/> </div> </br> ========================================================================================= </br> <div> <?php $query = ("SELECT C.firstname, C.lastname, A.accountname, A.id, A.amount FROM Customers C INNER JOIN CustomerAccuonts CA ON C.id = CA.customer_id INNER JOIN Accounts A ON CA.account_id = A.id WHERE A.id IN ( SELECT account_id FROM Customers C INNER JOIN CustomerAccuonts CA ON C.id = CA.customer_id INNER JOIN Accounts A ON CA.account_id = A.id WHERE C.loginname = '{$_POST['Username']}' )"); $getData = sqlsrv_query($db, $query); while($row = sqlsrv_fetch_array($getData)) { echo "<table width =\"800\" border=\"1\"><tr><td>{$row[0]}</td><td>{$row[1]}</td><td>{$row[2]}</td><td>{$row[3]}</td><td>{$row[4]}<td></tr></tabel></br>"; } sqlsrv_close($db); ?> </div> </div> </body> </html>

Permalänk
Medlem

Du har skickat en radbrytning innan din header.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Inaktiv

<link href="mall.css" rel="stylesheet" media="all""> ska ligga mellan <head> och </head> med.

Permalänk
Medlem
Skrivet av Phod:

Du har skickat en radbrytning innan din header.

vart då? i vilken fil?

Permalänk
Medlem

login.php

<?php require_once("db.php"); ?> <?php $username = $_POST['Username'];

Första raden.

Visa signatur

citera!

Permalänk
Medlem

Nu har jag ändrat men och redir funkar men bara för else satsen, spelar ingen roll vad för använder namn och lösen jag använder, rätt eller fel.

<?php require_once("db.php"); ?> <?php $query ="SELECT loginname, loginpass FROM Customers WHERE loginname = '{$_POST['Username']}' AND loginpass = {$_POST['UserPass']}"; $checklogin = sqlsrv_query($db, $query); $temp = sqlsrv_num_rows($checklogin); if($temp == 1) { sqlsrv_close($db); header("Location: ca.php"); exit; }else { sqlsrv_close($db); $temp = print_r($temp); header("Location: index.php?{$temp}"); exit; } ?>

Och som ni ser så skickar jag med värdet på $temp i länken i else saten för att kontrollera vad det blir och den blir verkligen 1!

Permalänk
Medlem

<?php require_once("db.php"); ?> <!-- här skickar du en ny rad --> <?php $username = $_POST['Username'];

Så här kan du lösa det:

<?php require_once("db.php"); $username = $_POST['Username'];

Sedan borde ju detta inte spela någon roll då du har på output buffering.

Visa signatur

citera!

Permalänk
Medlem

jo jag tror att problemet med headern är fixat nu men varför blir det redir till samma sida hela tiden? trots att @temp blir 1.