Avatar billede ohs Nybegynder
10. december 2006 - 11:14 Der er 64 kommentarer og
1 løsning

Skiftning af brugernavn

Kan ikke finde fejlen i koden. Får godt nok at brugernavn er blevet ændret, men det er den ikke.

<?php
$colname_rs_update = "1";
if (isset($_POST['password'])) {
  $colname_rs_update = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
}
mysql_select_db($database_cms, $cms);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE password = '%s'", $colname_rs_update);
$rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$row_rs_update = mysql_fetch_assoc($rs_update);
$totalRows_rs_update = mysql_num_rows($rs_update);

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if (isset($_POST['id'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {
  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);

  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Brugernavn er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}

?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 11:50 #1
Prøv at udskrive sql sætningen:

echo "sql sætningen er: *" . $updateSQL . "*<br><br>";

Eller hvordan man nu gør i PHP.. :-)

Så skulle den gerne skrive:

*UPDATE brugere SET brugernavn='Hans' WHERE password='123'*

Hvis brugerens nye navn er "Hans", og passwordet er "123".


Men det er faktisk en ret dum måde at gøre det på..

Hvad vil du gøre, hvis 2 brugere med forskellige brugernavne, har valgt samme passwordet??

I stedet skal det se sådan ud:

update brugere set brugernavn='nyt navn' where brugernavn='gammelt navn' and password='kodeordet'
Avatar billede thesurfer Nybegynder
10. december 2006 - 11:53 #2
Jeg går ud fra, at man kun kan ændre sit brugernavn, hvis man er logget ind..

Hvis man er logget ind, har du jo det nuværende brugernavn.. f.eks. i en session.

Bare det ikke er cookie-baseret, som kommer til at ligge på klienten/hos brugeren (som han så kan redigere..)
Avatar billede ohs Nybegynder
10. december 2006 - 11:57 #3
Ja det er rigtig med ens brugernavn og password, men nu er det lavet sådan at brugeren kun kan rette sit password men ikke sit brugernavn. Brugernavn kan kun rettes af administrator.

Jeg bruger den samme kode til at skifte password med og det virker perfekt, så derfor forstår jeg ikke hvad jeg har lavet forkert i dette stykke kode for brugernavn.
Avatar billede thesurfer Nybegynder
10. december 2006 - 12:00 #4
Hvis vi to er brugere, og begge vælger passwordet "123", så er det kun den første person (sorteret) der kan skifte password.

Den anden person kan kun gøre det, efter at den første person skifter fra "123" til noget andet.

Derfor skal du bruge where brugernavn='gammelt brugernavn'-delene..
Avatar billede ohs Nybegynder
10. december 2006 - 12:06 #5
Derfor skal du bruge where brugernavn='gammelt brugernavn'-delene..  Det gør jeg jo også.
Avatar billede ohs Nybegynder
10. december 2006 - 12:34 #6
Tror jeg dropper at man kan ændre brugernavn og lægger brugernavnene fast, så det kun er password der kan ændres.
Avatar billede thesurfer Nybegynder
10. december 2006 - 12:35 #7
Hvad sker der, hvis du laver koden sådan her?:

  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);

echo "sql sætningen er: *" . $updateSQL . "*<br><br>";

Hvad skriver den til dig?
Avatar billede thesurfer Nybegynder
10. december 2006 - 12:36 #8
Rettelse:

Brug "update brugere set brugernavn='nyt navn' where brugernavn='gammelt navn' and password='kodeordet'"

Du kan bare erstatte brugernavnene og passwordet med "***"..
Avatar billede ohs Nybegynder
10. december 2006 - 13:09 #9
Denne kode er for skiftning af password og virker perfekt:

<?php
$colname_rs_update = "1";
if (isset($_POST['brugernavn'])) {
  $colname_rs_update = (get_magic_quotes_gpc()) ? $_POST['brugernavn'] : addslashes($_POST['brugernavn']);
}
mysql_select_db($database_cms, $cms);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE brugernavn = '%s'", $colname_rs_update);
$rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$row_rs_update = mysql_fetch_assoc($rs_update);
$totalRows_rs_update = mysql_num_rows($rs_update);

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if (isset($_POST['id'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_password']==$row_rs_update['password']) && ($_POST['nyt_password']==$_POST['gentag_password'])) {
  $updateSQL = sprintf("UPDATE brugere SET password='%s' WHERE brugernavn='%s'",
                      $_POST['nyt_password'],
                      $_POST['brugernavn']);

  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Koden er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}

?>
Avatar billede ohs Nybegynder
10. december 2006 - 13:11 #10
Denne kode er for skiftning af brugernavn, men kommer med fejlmeddelse:
Der er en fejl i dine indtasninger

<?php
$colname_rs_update = "1";
if (isset($_POST['password'])) {
  $colname_rs_update = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
}
mysql_select_db($database_cms, $cms);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE password = '%s'", $colname_rs_update);
$rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$row_rs_update = mysql_fetch_assoc($rs_update);
$totalRows_rs_update = mysql_num_rows($rs_update);

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if (isset($_POST['id'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {
  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);

  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Brugernavn er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}

?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 13:21 #11
Så ligger "fejlen" her:

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn']))

Prøv følgende:

echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";

Hvis du i udskriften støder på "X er **", er X tom, og der vil være fejl..

Hvordan ser det ud nu?
Avatar billede ohs Nybegynder
10. december 2006 - 13:35 #12
Nej det virker ikke, der kommer linje fejl. 

Forskellen på de to koder er jo kun at den ene skifter password og virker og den anden skifter brugernavn, så fejlen må være en tastefejl et sted. Der skal jo ikke laves om på selve koden for dette. Det eneste som der er laves om på er navnene password og brugernavn.
Avatar billede thesurfer Nybegynder
10. december 2006 - 13:39 #13
Beskeden "fejl i dine indtastninger" vil komme frem, hvis der er en betingelse, der ikke opfyldes her:

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn']))

Dvs, besked vil komme frem, hvis:

$_POST["MM_update"]: ikke er sat
$_POST["MM_update"]: ikke er lig "code" og jeg mener at det er case-sensitive
$_POST['gammel_brugernavn']: er ikke lig $row_rs_update['brugernavn']
$_POST['nyt_brugernavn']: er ikke lig $_POST['gentag_brugernavn']

Hvis bare 1 ting er forkert, vil fejl-beskeden komme frem..

Det er derfor jeg skrev at du lige skulle lave testen..

- Er testen iorden?
Avatar billede thesurfer Nybegynder
10. december 2006 - 13:40 #14
Hvad mener du med "Nej det virker ikke, der kommer linje fejl. " ?


Husk ALTID:
Forklar nærmere, og inkluder HELE fejlbeskrivelsen, samt den linie der er fejl i.
Avatar billede ohs Nybegynder
10. december 2006 - 14:20 #15
Hvordan skal det indsættes i koden eller udskiftes med for at afprøve det 100% korrekt.

echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:25 #16
F.eks. lige før linien "if ((isset($_POST["MM_update"])) && .....":

echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn']))
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:26 #17
Rettelse:

echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {


Jeg havde glemt at få "{" med..
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:30 #18
Du skal så sammenligne det der bliver udskrevet, med det du har indtastet og det du har i databasen..

Altså skal du vide hvad du har, og hvad du indtaster.. ellers kan du ikke bruge testen til noget..
Avatar billede ohs Nybegynder
10. december 2006 - 14:31 #19
Denne fejl kommer.

Parse error: parse error in C:\Programmer\Apache Group\Apache2\htdocs\websted\admin\adm_brugernavn.php on line 171
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:35 #20
Læs lige indlægget 10/12-2006 13:40:32 igen..
Avatar billede ohs Nybegynder
10. december 2006 - 14:38 #21
171 er den sidste linje i hele koden. Fejel må være ligge her et sted. Jeg havde glemt at få "{" med..
Avatar billede ohs Nybegynder
10. december 2006 - 14:40 #22
Der mangle denne her }
Avatar billede ohs Nybegynder
10. december 2006 - 14:42 #23
Efter indtastning indsætter dette øverst på selve side:

MM_update er *code*
form, gammel_brugernavn er *admin_2*
database, brugernavn er *administrator*
form, nyt_brugernavn er *sh*
form, gentag_brugernavn er *sh*
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:42 #24
Jeg kan ikke se alle dine linier, og slet ikke med linienummer..

Du skal altid inkludere selv linien.. dvs, den kodelinie med fejl i.. Ellers kan jeg ikke se hvilken linie det er..
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:44 #25
Antallet af "{" skal stemme med antallet af "}"..

Ret det lige, og test igen..

1) Virker det nu?

2) Var det de rigtige data der blev udskrevet?
Avatar billede ohs Nybegynder
10. december 2006 - 14:48 #26
MM_update er *code*
form, gammel_brugernavn er *admin_2*  >Den er rigtig<
database, brugernavn er *administrator* >Ved ikke hvorfor denne tages med<
form, nyt_brugernavn er *sh*    >Den er rigtig<
form, gentag_brugernavn er *sh* >Den er rigtig<
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:51 #27
Så er det da klart, at det ikke virker.. :-)

Den sammenligner jo "form, gammel_brugernavn" med "database, brugernavn"... og de to ting er ikke ens..

Derfor vil den altid (så længe de ikke er ens) skrive "fejl i dine indtastninger"..

Se her: ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn'])
Avatar billede ohs Nybegynder
10. december 2006 - 14:56 #28
Det er database brugernavn som så er forkert, den som jeg ville lave om var admin_2

Hvor skal jeg rette dette.
Avatar billede thesurfer Nybegynder
10. december 2006 - 14:59 #29
Du kan gøre det på 2 måder:

1) Skriv "administrator" i "gammel_brugernavn" i formen.

2) Gå ind i databasen, og ændr brugernavnet til noget andet, f.eks. "admin_2", så du kan lave det om via scriptet.. :-)
Avatar billede ohs Nybegynder
10. december 2006 - 15:16 #30
Der må være noget som er helt galt. Har lige prøvet at skrive administrator i gammel brugernavn og sh i nyt. Så retter den alle brugere til samme brugernavn "sh"

Der skal nok laves en helt ny kode fra bunden som er beregnet til at man kan skifte brugernavn. Der er åbenbart for mange fejl i denne kode her.
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:23 #31
Ahh.. fejlen er jo her:

$query_rs_update = sprintf("SELECT * FROM brugere WHERE password = '%s'", $colname_rs_update);

Du henter alle brugerne ud, med et hvis kodeord.. Hvorfor det?

Du skal kun hente 1 bruger ud, og det er med brugernavn = 'gammelt brugernavn';

Du bruger jo "$query_rs_update" igen lidt senere i koden (et par linier ned)..
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:25 #32
#1: $query_rs_update = sprintf("SELECT * FROM brugere WHERE password = '%s'", $colname_rs_update);
#2: $rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
#3: $row_rs_update = mysql_fetch_assoc($rs_update);


#1: SQL sætning = hent alle brugere med et bestemt password
#2: put resultatet i $rs_update
#3: $row_rs_update sættes til $rs_update i en eller anden sammenhæng, som jeg ikke lige kan se, men vil slå op :-)

Derefter bruger du $row_rs_update igen..
Avatar billede ohs Nybegynder
10. december 2006 - 15:26 #33
Vil du prøve at lave den færdige kode som du tror virker efter at du har rettet den til.
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:28 #34
Jeg kan ikke helt se hvorfor du danner en array: http://dk2.php.net/mysql_fetch_assoc

Du skal jo kun rette 1 brugernavn..

Jeg kan lige kigge på det..
Avatar billede ohs Nybegynder
10. december 2006 - 15:30 #35
Jeg kan lægge hele koden ind for hele siden hvis det vil hjælpe dig noget mere.
Avatar billede ohs Nybegynder
10. december 2006 - 15:31 #36
Den er så her.

<?php require_once('../Connections/cms.php'); ?>
<?php
$colname_rs_update = "1";
if (isset($_POST['password'])) {
  $colname_rs_update = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
}
mysql_select_db($database_cms, $cms);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE password = '%s'", $colname_rs_update);
$rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$row_rs_update = mysql_fetch_assoc($rs_update);
$totalRows_rs_update = mysql_num_rows($rs_update);

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if (isset($_POST['id'])) {
echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {}
  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);

  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Brugernavn er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>&AElig;ndring af brugernavn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../css/styles.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style1 {
    color: #666666;
    font-weight: bold;
    font-size: 12px;
}
body {
    background-image: url(../img/baggrund.jpg);
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    height: 100%
}
.style2 {
    font-size: 24px;
    color: #000000;
}
.style3 {color: #333333}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
//-->
</script>
</head>

<body>
<table width="722"  border="0" align="center" bgcolor="#FFFFFF" class="layout">
  <tr>
    <td colspan="2" class="top style1"><table width="722" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="80" bgcolor="#CCCCCC"><div align="center"><span class="style2">Administration &gt; Skift brugernavn &lt; </span></div></td>
      </tr>
      <tr>
        <td align="right"><div align="right"><a href="#" onClick="MM_callJS('java script:window.close();')" onMouseOver="MM_swapImage('Image1','','img/adm_29_over.gif',0)" onMouseOut="MM_swapImgRestore()"><img src="img/adm_29.gif" name="Image1" width="80" height="22" border="0"></a></div></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td class="top1">&nbsp;</td>
    <td class="top1"><?php echo $result; ?></td>
  </tr>
  <tr>
    <td class="left"><p>&nbsp;</p>
    <p align="center"><a href="index.php"></a> </p></td>
    <td class="middle">
    <form action="<?php echo $editFormAction; ?>" method="POST" name="code" id="code">
      <table width="623" border="0" cellspacing="0" cellpadding="3">
        <tr>
          <td width="146"><div align="right" class="style3">Password:</div></td>
          <td width="152"><input name="password" type="text" id="password" size="25"></td>
          <td width="147"><div align="right" class="style3">Gammel brugernavn: </div></td>
          <td width="154"><input name="gammel_brugernavn" type="text" id="gammel password" size="25"></td>
        </tr>
        <tr>
          <td><div align="right" class="style3">Nyt brugernavn: </div></td>
          <td><input name="nyt_brugernavn" type="text" id="nyt password" size="25"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><div align="right" class="style3">Gentag brugernavn: </div></td>
          <td><input name="gentag_brugernavn" type="text" id="gentag password" size="25"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input name="udf&oslash;r" type="submit" id="udf&oslash;r" value="Udf&oslash;r"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><input name="id" type="hidden" id="id" value="<?php echo $row_rs_Update['id']; ?>"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
      <input type="hidden" name="MM_update" value="code">
    </form>      <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    </td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($rs_update);

mysql_free_result($rs_Update);
?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:46 #37
Bruger du overhovedet $totalRows_rs_update til noget?

Den stammer fra linien: $totalRows_rs_update = mysql_num_rows($rs_update);
Avatar billede thesurfer Nybegynder
10. december 2006 - 15:48 #38
Hvis jeg ikke tager fejl, kan du nøjes med en top der ser sådan ud:


<?php require_once('../Connections/cms.php'); ?>
<?php

mysql_select_db($database_cms, $cms);

$kodeord = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
$gammelt_brugernavn = (get_magic_quotes_gpc()) ? $_POST['gammel_brugernavn'] : addslashes($_POST['gammel_brugernavn']);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE brugernavn='%s' and password = '%s'", $gammelt_brugernavn, $kodeord);

$row_rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

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

...... resten af koden her.....
Avatar billede ohs Nybegynder
10. december 2006 - 15:49 #39
Nej det gør jeg ikke.
Avatar billede ohs Nybegynder
10. december 2006 - 16:05 #40
Har lige afprøvet dette men får stadig samme fejl. Her er hele koden for siden.

<?php require_once('../Connections/cms.php'); ?>
<?php
mysql_select_db($database_cms, $cms);
$kodeord = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
$gammelt_brugernavn = (get_magic_quotes_gpc()) ? $_POST['gammel_brugernavn'] : addslashes($_POST['gammel_brugernavn']);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE brugernavn='%s' and password = '%s'", $gammelt_brugernavn, $kodeord);
$row_rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if (isset($_POST['id'])) {
if (isset($_POST['id'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {
  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);
  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Brugernavn er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>&AElig;ndring af brugernavn</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../css/styles.css" rel="stylesheet" type="text/css">
<style type="text/css">
<!--
.style1 {
    color: #666666;
    font-weight: bold;
    font-size: 12px;
}
body {
    background-image: url(../img/baggrund.jpg);
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    height: 100%
}
.style2 {
    font-size: 24px;
    color: #000000;
}
.style3 {color: #333333}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}
//-->
</script>
</head>

<body>
<table width="722"  border="0" align="center" bgcolor="#FFFFFF" class="layout">
  <tr>
    <td colspan="2" class="top style1"><table width="722" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="80" bgcolor="#CCCCCC"><div align="center"><span class="style2">Administration &gt; Skift brugernavn &lt; </span></div></td>
      </tr>
      <tr>
        <td align="right"><div align="right"><a href="#" onClick="MM_callJS('java script:window.close();')" onMouseOver="MM_swapImage('Image1','','img/adm_29_over.gif',0)" onMouseOut="MM_swapImgRestore()"><img src="img/adm_29.gif" name="Image1" width="80" height="22" border="0"></a></div></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td class="top1">&nbsp;</td>
    <td class="top1"><?php echo $result; ?></td>
  </tr>
  <tr>
    <td class="left"><p>&nbsp;</p>
    <p align="center"><a href="index.php"></a> </p></td>
    <td class="middle">
    <form action="<?php echo $editFormAction; ?>" method="POST" name="code" id="code">
      <table width="623" border="0" cellspacing="0" cellpadding="3">
        <tr>
          <td width="146"><div align="right" class="style3">Password:</div></td>
          <td width="152"><input name="password" type="text" id="password" size="25"></td>
          <td width="147"><div align="right" class="style3">Gammel brugernavn: </div></td>
          <td width="154"><input name="gammel_brugernavn" type="text" id="gammel password" size="25"></td>
        </tr>
        <tr>
          <td><div align="right" class="style3">Nyt brugernavn: </div></td>
          <td><input name="nyt_brugernavn" type="text" id="nyt password" size="25"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><div align="right" class="style3">Gentag brugernavn: </div></td>
          <td><input name="gentag_brugernavn" type="text" id="gentag password" size="25"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input name="udf&oslash;r" type="submit" id="udf&oslash;r" value="Udf&oslash;r"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
          <td><input name="id" type="hidden" id="id" value="<?php echo $row_rs_Update['id']; ?>"></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>
        </tr>
      </table>
      <input type="hidden" name="MM_update" value="code">
    </form>      <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    </td>
  </tr>
</table>
</body>
</html>
<?php
mysql_free_result($rs_update);

mysql_free_result($rs_Update);
?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:06 #41
Læs lige 10/12-2006 13:40:32 igen: http://www.eksperten.dk/spm/749907#rid6546080 :-)
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:06 #42
(jeg vil gerne se selve linien der er fejl i, samt hvad fejlen er)
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:07 #43
Hvorfor har du egentligt 2x "mysql_free_result($rs_Update);" i bunden af din side?
Avatar billede ohs Nybegynder
10. december 2006 - 16:08 #44
Der er ikke fejl i en linje men får denne meddelse, Der er en fejl i dine indtasninger, prøv igen
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:09 #45
Indsæt disse linier igen:

echo "MM_update er *" . $_POST["MM_update"] . "*<br>";
echo "form, gammel_brugernavn er *" . $_POST["gammel_brugernavn"] . "*<br>";
echo "database, brugernavn er *" . $row_rs_update['brugernavn'] . "*<br>";
echo "form, nyt_brugernavn er *" . $_POST["nyt_brugernavn"] . "*<br>";
echo "form, gentag_brugernavn er *" . $_POST["gentag_brugernavn"] . "*<br>";

Hvad skriver den så?
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:10 #46
For fremtiden: "Der er en fejl i dine indtasninger, prøv igen" er ikke en fejl. Det er en besked/udskrift..

Hvis du skriver "fejl", vil jeg tro at det er en fejl i PHP-koden, og ikke din IF-sætning.

Husk det.. :-)
Avatar billede ohs Nybegynder
10. december 2006 - 16:11 #47
Disse passer stadig ikke sammen.

$_POST["gammel_brugernavn"] . "*<br>";  admin_5
$row_rs_update['brugernavn'] . "*<br>";  administrator
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:13 #48
Prøv med "administrator" i stedet for "admin_5" i feltet "gammelt brugernavn" i formen.

Hvad skriver den så?
Avatar billede ohs Nybegynder
10. december 2006 - 16:15 #49
Har lige prøvet før du skrev. Så har jeg balladen igen med at alle brugere bliver rettet med samme brugernavn.
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:17 #50
Hvordan ser din PHP kode ud (jeg har ikke brug for HTML koden) ?
Avatar billede ohs Nybegynder
10. december 2006 - 16:19 #51
Sådan her uden test koden.

<?php
mysql_select_db($database_cms, $cms);
$kodeord = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
$gammelt_brugernavn = (get_magic_quotes_gpc()) ? $_POST['gammel_brugernavn'] : addslashes($_POST['gammel_brugernavn']);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE brugernavn='%s' and password = '%s'", $gammelt_brugernavn, $kodeord);
$row_rs_update = mysql_query($query_rs_update, $cms) or die(mysql_error());
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
if (isset($_POST['id'])) {
if (isset($_POST['id'])) {
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "code") && ($_POST['gammel_brugernavn']==$row_rs_update['brugernavn']) && ($_POST['nyt_brugernavn']==$_POST['gentag_brugernavn'])) {
  $updateSQL = sprintf("UPDATE brugere SET brugernavn='%s' WHERE password='%s'",
                      $_POST['nyt_brugernavn'],
                      $_POST['password']);
  mysql_select_db($database_cms, $cms);
  $Result1 = mysql_query($updateSQL, $cms) or die(mysql_error());
    $result="<b style='color: #0000ff;'>Brugernavn er blevet ændret</b>";
}
    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}
}
?>
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:22 #52
Fjern lige 1x "if (isset($_POST['id'])) {" her:

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

Fjern lige 1x "}" her:

    else $result="<b style='color: #ff0000;'>Der er en fejl i dine indtasninger, prøv igen</b>";
}
}
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:24 #53
Nu laver vi lige en test mere (jeg tror at det er her det går galt)..:

$kodeord = (get_magic_quotes_gpc()) ? $_POST['password'] : addslashes($_POST['password']);
$gammelt_brugernavn = (get_magic_quotes_gpc()) ? $_POST['gammel_brugernavn'] : addslashes($_POST['gammel_brugernavn']);
$query_rs_update = sprintf("SELECT * FROM brugere WHERE brugernavn='%s' and password = '%s'", $gammelt_brugernavn, $kodeord);

echo "gammelt_brugernavn: *" . $gammelt_brugernavn . "*<br>";
echo "kodeord: *" . $kodeord . "*<br>";

Hvad skriver den ved "gammelt_brugernavn" og "kodeord"?
Avatar billede ohs Nybegynder
10. december 2006 - 16:25 #54
Så dette da jeg lagde koden ind. Får så meddelse fejl i indtastning.
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:25 #55
Du skal naturligvis stadig bruge resten af koden..

Jeg har bare tilføjet disse linier til den eksisterende kode:

echo "gammelt_brugernavn: *" . $gammelt_brugernavn . "*<br>";
echo "kodeord: *" . $kodeord . "*<br>";
Avatar billede ohs Nybegynder
10. december 2006 - 16:31 #56
Den skriver dette og det er korrekt.

gammelt_brugernavn: *admin_2*
kodeord: *1234*
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:33 #57
Doh!.. Min fejl..

Sådan :

echo "gammelt_brugernavn: *" . $gammelt_brugernavn . "*<br>";
echo "kodeord: *" . $kodeord . "*<br>";
echo "sql: *" . $query_rs_update . "*<br>";

og så også de sædvanelige (de der echo-linier der er længere nede)..

Hvad skriver den så?
Avatar billede ohs Nybegynder
10. december 2006 - 16:41 #58
hov, kan se du har indsat navnet kodeord som ikke findes i databasen.

Den skriver.

gammelt_brugernavn: *admin_2*
kodeord: *1234*
sql: *SELECT * FROM brugere WHERE brugernavn='admin_2' and password = '1234'*
Avatar billede thesurfer Nybegynder
10. december 2006 - 16:49 #59
$kodeord er bare en variabel, der indeholder det du indtaster i formen, under password..

Hvad står der i de andre echo-linier (udskriftet)?
Avatar billede ohs Nybegynder
10. december 2006 - 17:10 #60
Jeg har nu slettet hele filen og vil starte helt forfra da der i denne her fil er alt for mange fejl i.

Der blev prøvet om man kunne finde hvor det gik galt, men desværre lykkedes det ikke.

Tak fordi du prøvede.

Slutter tråden her.
Avatar billede thesurfer Nybegynder
10. december 2006 - 17:14 #61
Du lægger bare et svar selv, og snupper pointsne.. husk at markere dit navn i boksen til venstre, før du klikker på Accepter-knappen..
Avatar billede ohs Nybegynder
10. december 2006 - 19:02 #62
thesurfer: Synes du skal havde at vide at jeg har fået det til at virke.
Fejlen skyltes at jeg for alle brugere havde givet samme password til alle, og det kunne systemet åbenbart i finde ud af.

Så hvis man så kunne indsætte et stykke kode så man ikke kunne indtaste et password hvis det var i brug og det samme for brugernavn.

Hvis du har lyst til at prøve er du meget velkommen til at prøve. Jeg ved ikke hvordan man skal gøre.
Avatar billede ohs Nybegynder
10. december 2006 - 19:48 #63
thesurfer
UPS glemte at skrive at du skal smide et svar da du har fortjent dette med indsatsen.
Avatar billede thesurfer Nybegynder
10. december 2006 - 20:07 #64
Det er egentligt nemt nok..

1) Brugeren submitter brugernavn og kodeord.
2) Du laver en select sætning der henter poster hvor brugernavn og kodeord matcher
3a) Hvis returneres mere end 0 poster, dvs, der er poster i databasen med brugernavnet og kodeordet, skriver du "Brugernavnet og/eller kodeordet er optaget. Vælg igen"
3b) Hvis der returneres 0 poster, kan brugeren oprettes.


Her er et svar :-)
Avatar billede ohs Nybegynder
10. december 2006 - 20:30 #65
thesurfer

Lyder godt, vil du prøve i et nyt spørgsmål at indsætte det i koden.
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Senior Data Engineers til dataplatform i Forsvaret

Politiets Efterretningstjeneste

PET søger softwareingeniører til Ruslandsområdet

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Vil du være med til at opbygge og udvikle Forsvarets dronekapacitet?