Avatar billede stengaard Praktikant
19. februar 2005 - 23:58 Der er 28 kommentarer og
1 løsning

hvad er galt med dette script

fejlen der kommer er følgende :

"Kunne ikke vælge felter i database-tabellen"

på dette script som skal tjekke nogle oplysninger fra mysql efter manhar indtastet brugerid og kode

<?php
    session_start();

include('include.php');

//hvis form er submittet
if (isset($_POST['logind'])) {

//password i databasen er krypteret, så det gøres også med indtastet password
$dopass = md5($_POST['password']);


//skift selv bruger og pass til databasen.
$db = mysql_connect($server, $username, $password) or die ("Desværre ingen forbindelse til databasen");

mysql_select_db($database, $db) or die ("Kunne ikke vælge databasetabel");

$tjek = mysql_query("SELECT navn, password, status FROM users WHERE navn='$_POST[navn]' AND password='$dopass'") or die ("Kunne ikke vælge felter i database-tabellen");

if(mysql_num_rows($tjek) != 0) {

$var = mysql_fetch_Array($tjek);
$status = $var["status"];

$_SESSION['sessionnr'] = session_id();
$_SESSION['Name'] = $_POST['navn'];
$_SESSION['Status'] = $status;


header("Location:add.php");
exit;
}else{

header("Location:logind.php?error=fejl");
exit;
}

}else{

header("Location:logind.php");
exit;
}

?>
Avatar billede detox Nybegynder
20. februar 2005 - 00:01 #1
Du kan måske få en mere sigende fejlkode hvis du retter:

$tjek = mysql_query("SELECT navn, password, status FROM users WHERE navn='$_POST[navn]' AND password='$dopass'") or die ("Kunne ikke vælge felter i database-tabellen");

til:

$tjek = mysql_query("SELECT navn, password, status FROM users WHERE navn='$_POST[navn]' AND password='$dopass'") or die (mysql_error());
Avatar billede stengaard Praktikant
20. februar 2005 - 00:06 #2
så bliver fejlen

Parse error: parse error, unexpected T_STRING in /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php on line 18
Avatar billede detox Nybegynder
20. februar 2005 - 00:08 #3
Har du lavet en typo?
Avatar billede stengaard Praktikant
20. februar 2005 - 00:12 #4
en typo hvad er det
Avatar billede detox Nybegynder
20. februar 2005 - 00:12 #5
tastefejl... hvad står der i linje 18?
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:15 #6
$tjek = mysql_query("SELECT navn, password, status FROM users WHERE navn='$_POST[navn]' AND password='$dopass'") or die (mysql_error()); (Det er vel linje 18)

Prøv med:

$tjek = mysql_query("SELECT navn, password, status FROM users WHERE navn='".$_POST['navn']."' AND password='".$dopass."'") or die (mysql_error());
Avatar billede stengaard Praktikant
20. februar 2005 - 00:17 #7
har rettet det men ny fejl kommer

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php:19) in /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php on line 33
Avatar billede stengaard Praktikant
20. februar 2005 - 00:18 #8
linie 19 : if(mysql_num_rows($tjek) != 0) {
linie 33 : header("Location:logind.php?error=fejl");
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:19 #9
prøv:

if(mysql_num_rows($tjek) > 0) {
Avatar billede detox Nybegynder
20. februar 2005 - 00:20 #10
Tjek navnene: navn, password, status og users  i databasen.
Avatar billede stengaard Praktikant
20. februar 2005 - 00:24 #11
det hjælp ikke samme fejl når jeg enter denne linie

if(mysql_num_rows($tjek) != 0) { til if(mysql_num_rows($tjek) > 0) {

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php on line 19

Warning: Cannot modify header information - headers already sent by (output started at /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php:19) in /customers/lkongen.dk/lkongen.dk/httpd.www/news/dologin.php on line 33
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:26 #13
stengaard > prøv lige at udskrive dit resultat fra mysql - bare lige for at se det.
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:30 #14
Hmm - underligt system der er lavet der.
Der oprettes f.eks. forbindelse til databasen 2 gange. (Både i dologin.php og i include.php)
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:31 #15
Desuden er den SQL også lidt underlig - hvorfor trække 2 fields ud man allerede kender!
Avatar billede stengaard Praktikant
20. februar 2005 - 00:33 #16
SQL result

Host: localhost
Database : lkongen_dk
Generation Time: Feb 20, 2005 at 12:31 AM
Generated by: phpMyAdmin 2.5.7-pl1 / MySQL 4.0.23_Debian-4-log
SQL-query: SELECT * FROM `users` LIMIT 0, 30;
Rows: 1
id     navn     password
1     admin     21232f297a57a5a743894a0e4a801fc3

ja men er ikke den store hajtil det og har fundet sciptet på http://www.asp.dk/sources.asp?mode=view_source&id=1963&submode=show_message&tech_id=2&comment_id=src_1963
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:35 #17
Virker underligt. Kunne godt lige tænke mig at høre exp's kommentar til systemet!
Avatar billede detox Nybegynder
20. februar 2005 - 00:37 #18
Men jeg ser ikke noget felt der hedder: 'status'?
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:38 #19
Kan vi lige få et dump af tabellen?
Avatar billede stengaard Praktikant
20. februar 2005 - 00:38 #20
jep men har du nogen ide om hvordan man eventuelt kunne lave det dologin.php script så man kunne få det til at virke eller kender du et bedre script jeg er lidt newbie i nu med php/mysql kender lidt mere til asp/access mem det udbyder mit webhotel ikke
Avatar billede stengaard Praktikant
20. februar 2005 - 00:39 #21
følgende er dumpet det fulgte med

#
# Newsscript by Michael Kjeldsen aka exp
# website: www.firewerx.dk
#

#
# Struktur dump for tabellen `news`
#

DROP TABLE IF EXISTS `news`;
CREATE TABLE `news` (
  `id` int(11) NOT NULL auto_increment,
  `dato` tinytext NOT NULL,
  `overskrift` text NOT NULL,
  `text` text NOT NULL,
  `status` int(1) NOT NULL default '1',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

#
# Data dump for tabellen `news`
#

INSERT INTO `news` (`id`, `dato`, `overskrift`, `text`, `status`) VALUES (1, '1044397412', 'Så er der nyheder!', 'Der kan let tilføjes nye funktioner, fx smilies o.lign.\r\n\r\nFx konverteres indtastede url\\\'s og emailadresser til klikbare links :o)\r\n\r\nLæs readme.txt for flere detaljer!\r\n\r\nVenligst\r\nexp\r\nwww.firewerx.dk\r\nexp@firewerx.dk', 1);

#
# Struktur dump for tabellen `brugere`
#

CREATE TABLE users (
  id tinyint(4) NOT NULL auto_increment,
  navn varchar(12) NOT NULL default '',
  password tinytext NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;

#
# Data dump for tabellen `users`
#

INSERT INTO users VALUES (1, 'admin', md5('admin'));
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:39 #22
Prøv at kigge lidt her: http://www.hotscripts.com/
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:40 #23
detox har ret. Feltet status findes ikke!
Avatar billede detox Nybegynder
20. februar 2005 - 00:40 #24
Fjern 'status' fra din forespørgsel og sæt:

$status = 1;
Avatar billede detox Nybegynder
20. februar 2005 - 00:41 #25
Men det er ikke til at sige om det vil virke på de andre sider, hvis $_SESSION['Status'] bliver tjekket for et bestemt indhold.
Avatar billede tigertool Nybegynder
20. februar 2005 - 00:42 #26
(Er rystet over at man kan hente sådan et system)
Avatar billede detox Nybegynder
20. februar 2005 - 00:55 #27
Ja, det dur ikke :(
Avatar billede stengaard Praktikant
20. februar 2005 - 00:58 #28
sikke noget lort
Avatar billede stengaard Praktikant
01. december 2005 - 10:38 #29
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester