muffe Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 Har et login-script som ser sånn ut: <?php session_start(); $id = $_POST['ID']; $password = $_POST['Passwd']; include('connect.php'); $query = "SELECT * FROM users WHERE id='$id' and Passwd='".md5($password)."'"; $result= mysql_query($query) or die ("Could not execute query : $query." . mysql_error()); if (mysql_num_rows($result) == 0) { echo('Brukernavnet og/eller passordet er feil. Vennligst prøv igjen.'); } else { $r=mysql_fetch_array($result); $login_username=$r["id"]; $_SESSION['login_username'] = $login_username; Header("Location: main.php"); } /* Lukker forbindelse */ mysql_close($link); ?> Når jeg skal logge inn får jeg: Notice: Undefined index: id in D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\login.php on line 22 Warning: Cannot modify header information - headers already sent by (output started at D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\connect.php:15) in D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\login.php on line 24 Noen tips? Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Problemet ligger i henting av data fra $_POST Du kan f.eks gjøre det slik $id = empty($_POST['ID']) ? false : $_POST['ID']; $password = empty($_POST['Passwd']) ? false : $_POST['Passwd']; if($id !== false && $password !== false) { // kjør sql query, login etc her } else { // vis feilmelding om at password/id mangler? } Edit: endret litt på koden Endret 1. februar 2004 av FuLu Lenke til kommentar
muffe Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 Fremdeles samme feilmelding... Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 Hmm, glemte å se på linje som koden feilet på eller hvor den fikk notice. $login_username=$r["id"]; bør helst være ['id'].. men du er 100% sikker på at den heter 'id' og ikke 'ID' i databasen? Hvis du blir kvitt dette problemet, så vil du også bli kvitt meldingen om "Headers already sent..." Lenke til kommentar
muffe Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 men du er 100% sikker på at den heter 'id' og ikke 'ID' i databasen? Hvis du blir kvitt dette problemet, så vil du også bli kvitt meldingen om "Headers already sent..." Uuuuups.... Men hvorfor vil den ikke forwarde til main.php? Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Du må ha en exit(); etter den header() Hmm jo, mulig du må ha full url, ikke bare main.php, tror du må ha "Header: http://dinserver/main.php" Endret 1. februar 2004 av FuLu Lenke til kommentar
muffe Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 Har nå koden: <?php session_start(); $id = $_POST['id']; $password = $_POST['Passwd']; include('connect.php'); $query = "SELECT * FROM users WHERE id='$id' and Passwd='".md5($password)."'"; $result= mysql_query($query) or die ("Could not execute query : $query." . mysql_error()); if (mysql_num_rows($result) == 0) { echo('Brukernavnet og/eller passordet er feil. Vennligst prøv igjen.'); } else { $r=mysql_fetch_array($result); $login_username=$r['id']; $_SESSION['login_username'] = $login_username; Header("Location: main.php"); exit(); } /* Lukker forbindelse */ mysql_close($link); ?> Feilmeldingen nå er: Parse error: parse error, unexpected '<' in D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\main.php on line 19 Noen idé? Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 Feilen ligger hvertfall ikke i koden du pastet nå, den ligger i main.php Paste koden derfra du. Lenke til kommentar
muffe Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 Feilen ligger hvertfall ikke i koden du pastet nå, den ligger i main.php Paste koden derfra du. Feilen i main.php var bagatellmessig. Men har et nytt problem: <?php session_start(); if ($_SESSION['login_username']=="") { header("Location: login.html"); exit(); } else { header("Location: main.php"); exit(); } ?> Gir feilmeldingen: Warning: Cannot modify header information - headers already sent by (output started at D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\menu.php:4) in D:\Programfiler\Apache Group\Apache2\htdocs\Treningsdagbok\menu.php on line 5 Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Ok, du må passe på at header() og session_start() alltid kommer først, aldri etter du har echo'a ut tekst til nettleseren, dette vil krølle til med header opplegg, siden dette skal alltid komme først Struktur jeg pleier å ha er: logikk/header/login/sjekking av $_POST osv først annen logikk som innbærer layout/grafisk/visuelt kommer til slutt Endret 1. februar 2004 av FuLu Lenke til kommentar
muffe Skrevet 1. februar 2004 Forfatter Del Skrevet 1. februar 2004 Har også et søke-script: <?php error_reporting (E_ALL ^ E_NOTICE); session_start(); if($_SESSION['login_username']=="") { echo('Du må logge inn først'); } else { $id = $_SESSION['login_username']; $database = 'treningsdagbok'; $table = 'data'; echo(' <html> <head> <title>GSF: Treningsdagbok</title> </head> <body> <h1>Søk etter oppføring</h1> <form action="search.php" method="POST"> Søketekst: <input name="search" type="text"> <input type="submit"> </form> '); if($_POST['search']!="") { $search = $_POST['search']; include 'connect.php'; $query = "SELECT * FROM $table WHERE MATCH (Erfaringer) AGAINST ('$search')"; $result = mysql_query($query) or die("Spørring feilet : " . mysql_error()); /* Skriver ut resultatet til HTML */ echo "<table border>\n<tr>"; $fields = mysql_list_fields($database, $table); $columns = mysql_num_fields($fields); for ($i = 0; $i < $columns; $i++) { echo "<th>" . mysql_field_name($fields, $i) . "</th>"; } echo "</tr>"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { print "\t<tr>\n"; foreach ($line as $col_value) { print "\t\t<td>$col_value</td>\n"; } print "\t</tr>\n"; } print "</table>\n"; /* Lukker forbindelse */ mysql_close($link); } echo(' </body> </html> '); } ?> Noen peiling på hvorfor det ikke vil virke? Det returnerer aldri noen oppføringer... Sikkert en enkel sak. Har surret mye unødig i dag. Lenke til kommentar
FuLu Skrevet 1. februar 2004 Del Skrevet 1. februar 2004 (endret) Det er mulig du må ha spørringen din i en annen rekkefølge: $columns = mysql_num_fields($fields); $query = "SELECT * FROM $table WHERE MATCH (Erfaringer) AGAINST ('$search')"; $result = mysql_query($query) or die("Spørring feilet : " . mysql_error()); for ($i = 0; $i < $columns; $i++) Endret 1. februar 2004 av FuLu Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå