webForumDet fria alternativet

vad är fel?

PHP

14 svar · 369 visningar · startad av FunTrix

Medlem sedan okt. 2003118 inlägg
Frågan#1

tja...
någon som hittar felet i phpkoden nedan...
får nämlingen upp följande fel...
Parse error: syntax error, unexpected '{' in d:\webhosting\upload\options\index.php on line 110
rad 110 är denna: If(($_POST['newpass'] == $_POST['newpass2']) && ($_POST['oldpass'] == $oldpass){

skickar med hela phpkoden ifall att det hjälper, tror nämligen att det möjligtvis kan finnas fler fel i koden så vore schysst om ni kolla igenom den...

<?php
session_start(); // Alltid överst på sidan
 
// Kolla om inloggad = sessionen satt
if (!isset($_SESSION['sess_user'])) {
   header("Location: ../index.php");
   exit;
}
// ta fram user information.
$user = $_SESSION['sess_user'];
 
include "../conn.php"; // Databasanslutningen
?>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
 
<body>
<p><span class="style6">
  <?
$pass   = md5($_POST['pass']);   
$sql = "SELECT * FROM `uploadmembers` WHERE user='{$user}'";
$result = mysql_query($sql) or die(mysql_error());
 
if (mysql_num_rows($result) == 0){
while ($variable = mysql_fetch_array($result)){
   $oldpass = $variable['pass'];
}} else {
   $error = 1;
}
 
If(($_POST['newpass'] == $_POST['newpass2']) && ($_POST['oldpass'] == $oldpass){
   $sql = "UPDATE uploadmembers SET pass='{$pass}' WHERE user='{$user}'";
   $result = mysql_query($sql) or die(mysql_error());
   $error = 0;
} else {
   If ($_POST['newpass'] <> $_POST['newpass2']) {
     $error = 2;
   }
   If ($_POST['oldpass'] <> $oldpass) {
     $error = 3;
   }
}
 
switch($error){
  case 0:
    $echo 'L&ouml;senordet har bytts.';
    break;
  case 1:
    $echo 'Du f&ouml;rs&ouml;ker exploita systemet och ladda upp med n&aring;gon annans anv&auml;ndare, fy sk&auml;ms.';
    break;
  case 2:
    $echo 'Ditt nya l&ouml;senord &ouml;verst&auml;mmer inte med varandra.';
    break;
  case 3:
    $echo 'Ditt gamla l&ouml;senord som du angett &auml;r fel';
   break;
}
 
?>
</span> </p>
<form name="form1" method="post" action="index.php">
  <table width="61%"  border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Byt l&ouml;senord </td>
    </tr>
    <tr>
      <td><table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td><br>
            Ditt gamla l&ouml;senord: <br>
            <input name="oldpass" type="password" id="oldpass"></td>
        </tr>
        <tr>
          <td>Ditt nya l&ouml;senord: </td>
        </tr>
        <tr>
          <td><input name="newpass1" type="text" id="newpass1"></td>
        </tr>
        <tr>
          <td>Ditt nya l&ouml;senord igen: <br>
                <input name="newpass2" type="text" id="newpass2"></td>
        </tr>
        <tr>
          <td><input type="submit" name="Submit" value="Byt l&ouml;senord"></td>
        </tr>
      </table></td>
    </tr>
  </table>
</form>
</body>
</html>
Medlem sedan juli 20033 147 inlägg
#2

Precis som koden skriver finns det en } för mycket

while ($variable = mysql_fetch_array($result)){
   $oldpass = $variable['pass'];
}} else { // HÄR!
   $error = 1;
}
Medlem sedan juli 20033 147 inlägg
#3

Såg nu att det även här står fel

If($_POST['newpass'] == $_POST['newpass2'] && $_POST['oldpass'] == $oldpass){
Medlem sedan juni 20006 031 inlägg
#4

Och på raden du får felmeddelande så saknas en )
Ska vara:

If(($_POST['newpass'] == $_POST['newpass2']) && ($_POST['oldpass'] == $oldpass)) {
Medlem sedan okt. 2003118 inlägg
#5

får då upp Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in d:\webhosting\upload\options\index.php on line 125

i switchen här:
$echo 'Lösenordet har bytts.';

Medlem sedan juni 20006 031 inlägg
#6

Varför har du $ framför echo?

Medlem sedan okt. 2003118 inlägg
#7

här kommer hela switchen:

switch($error){
  case 0:
    $echo 'Lösenordet har bytts.';
    break;
  case 1:
    $echo 'Du försöker exploita systemet och ladda upp med någon annans användare, fy skäms.';
    break;
  case 2:
    $echo 'Ditt nya lösenord överstämmer inte med varandra.';
    break;
  case 3:
    $echo 'Ditt gamla lösenord som du angett är fel';
   break;
}
Medlem sedan juni 20006 031 inlägg
#8

red/ glöm detta om du läste det, det var jag som läste din kod fel ;)

Medlem sedan juni 20006 031 inlägg
#9

Melea skrev:

Precis som koden skriver finns det en } för mycket

while ($variable = mysql_fetch_array($result)){
   $oldpass = $variable['pass'];
}} else { // HÄR!
   $error = 1;
}

Nej, den andra hakparentesen tillhör ju if-satsen, så den ska vara kvar.

Medlem sedan okt. 2003118 inlägg
#10

hehe, okej... men han inte läsa vad du hade skrivit...

Medlem sedan juni 20006 031 inlägg
#11

FunTrix skrev:

här kommer hela switchen:

Ta bort $ framför dina echo i switchen, annars gör du ju en varibel av echo.

Medlem sedan okt. 2003118 inlägg
#12

men även om jag låter hakparantesen vara kvar så har jag fortfarande felet på rad 125 i switchen med bytt lösenord.

Medlem sedan juni 20006 031 inlägg
#13

FunTrix skrev:

hehe, okej... men han inte läsa vad du hade skrivit...

Jag läste lika fel som Melea.
Du bör nog skriva din kod lite tydligar, så är den lättare att läsa, även för dig själv.
t.ex

if (mysql_num_rows($result) == 0) {
	while ($variable = mysql_fetch_array($result)) {
   		$oldpass = $variable['pass'];
	}
} else {
   	$error = 1;
}
Medlem sedan okt. 2003118 inlägg
#14

tack... tror att det ska fungera nu.. .ska bara fixa lite med några sessioner först, nu får jag inga error på sidan iaf :)

Medlem sedan juni 20006 031 inlägg
#15

FunTrix skrev:

men även om jag låter hakparantesen vara kvar så har jag fortfarande felet på rad 125 i switchen med bytt lösenord.

Har du tagit bort dollartecknet framför echo?

296 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
167 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
167 ms — ändringar (db)